Cmake不尊重-D CMAKE_CXX_COMPILER = g ++

时间:2012-12-13 02:06:53

标签: c++ g++ cmake

我试图强制cmake用g ++构建我的cpp代码,因为默认情况下它使用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 / c ++而不是/ usr / bin / g ++我同意它仍然使用clang。知道问题是什么吗?我知道我有g ++并且它在/ usr / bin /中。 我正在运行Mac OS X 10.8.2

2 个答案:

答案 0 :(得分:13)

CMAKE_CXX_COMPILER只能在给定构建目录中第一次运行cmake时设置。在后续运行中,它将被忽略。要更改CMAKE_CXX_COMPILER,首先需要删除构建目录的内容,然后使用该选项再次运行cmake。

来源:http://www.cmake.org/Wiki/CMake_Useful_Variables

我认为仅在第一次运行时使用该变量的原因是因为稍后更改它可能会使已经构建的所有内容无效,包括配置检查,因此cmake无论如何都必须从头开始。

答案 1 :(得分:1)

我是这样做的:

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