Подтвердить что ты не робот

Cmake не оценивает -D CMAKE_CXX_COMPILER = g++

Я пытаюсь заставить cmake построить код cpp с g++, так как по умолчанию вместо него используется clang. Поэтому я использую: cmake -D CMAKE_CXX_COMPILER=g++ ../src/CMakeLists.txt, после которого cmake проверяет gcc и g++ (с успехом), но тем не менее make VERBOSE=1 дает

/usr/bin/c++     -o CMakeFiles/trial_cpp.dir/trial.cpp.o -c "/Users/Kuba/Code/Sketchpad/Trial     project/src/trial.cpp"
Linking CXX executable trial_cpp
/opt/etlocal/bin/cmake -E cmake_link_script CMakeFiles/trial_cpp.dir/link.txt --verbose=1
/usr/bin/c++    -Wl,-search_paths_first -Wl,-headerpad_max_install_names   CMakeFiles/trial_cpp.dir/trial.cpp.o  -o trial_cpp 

Как он вызывает/usr/bin/С++ not/usr/bin/g++, я согласен, что он все еще использует clang. Любая идея, в чем проблема? Я знаю, что у меня есть g++ и это в /usr/bin/. Я запускаю Mac OS X 10.8.2

4b9b3361

Ответ 1

CMAKE_CXX_COMPILER может быть установлен только при первом запуске cmake в заданном каталоге сборки. При последующих запусках он игнорируется. Чтобы изменить CMAKE_CXX_COMPILER, вам сначала нужно удалить содержимое каталога сборки, а затем снова запустить cmake с этой опцией.

Источник: http://www.cmake.org/Wiki/CMake_Useful_Variables

Я полагаю, что аргументация только для использования этой переменной в первом прогоне заключается в том, что изменение позже может потенциально привести к недействительности всего уже построенного, включая проверки конфигурации, поэтому cmake все равно должен начинаться с нуля.

Ответ 2

Я делаю это так:

CXX=/usr/bin/g++ cmake ../src/CMakeLists.txt