cmake жалуется на отсутствие поддержки C++0x компилятора, несмотря на то, что установлена ​​последняя версия clang

Я пытаюсь использовать cmake для сборки pdf2htmlEX

Это сообщение об ошибке:

CMake Error at CMakeLists.txt:108 (message):
  Error: your compiler does not support C++0x, please update it

Вот номер версии компилятора clang

$ which clang
/usr/bin/clang
$ which c++
/usr/bin/c++
$ clang --version
Ubuntu clang version 3.5-1ubuntu1 (trunk) (based on LLVM 3.5)
Target: x86_64-pc-linux-gnu
Thread model: posix
$ c++ --version
Ubuntu clang version 3.5-1ubuntu1 (trunk) (based on LLVM 3.5)
Target: x86_64-pc-linux-gnu
Thread model: posix

После быстрого теста я понял clang не поддерживается -std=c++0x, Я удалил Clang и установил G ++. Вот соответствующая информация о версии:

$ which g++
/usr/bin/g++
$ which c++
/usr/bin/c++
$ g++ --version
g++ (Ubuntu 4.8.2-19ubuntu1) 4.8.2
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ $ c++ --version
c++ (Ubuntu 4.8.2-19ubuntu1) 4.8.2
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Я запустил очень простой тест, и, кажется, g++ может принять c++0x параметр

g++ -std=c++0x /tmp/c/t.cpp

Я бегу cmake на Ubuntu 14.04.1 LTS

CMake

Его версия cmake version 2.8.12.2

Вот соответствующий код в CMakeLists.txt

include(CheckCXXCompilerFlag)
check_cxx_compiler_flag("${CMAKE_CXX_FLAGS}" CXX0X_SUPPORT)
if(NOT CXX0X_SUPPORT)
    message(FATAL_ERROR "Error: your compiler does not support C++0x, please update it.")
endif()

Я новичок в cmake, поэтому не знаю, как определить, какая проверка выполняется для check_cxx_compiler_flag от cmake

1 ответ

Решение

Оказывается, это проблема с кэшированием cmake.

Когда я запустил cmake в первый раз, он поднял clang++ который не поддерживает -std=c++0x вариант. Последующий запуск cmake продолжает сообщать о том же кэшированном результате, даже если clang был удален и исправлен g++ установлено.

Вот решение:

Перед повторным запуском cmake удалите папку CMakeFiles и файл CMakeCache.txt

Другие вопросы по тегам