14

我正在尝试强制 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

4

2 回答 2

15

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

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

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

于 2012-12-13T13:00:02.853 回答
2

我这样做是这样的:

CXX=/usr/bin/g++ cmake ../src/CMakeLists.txt
于 2012-12-13T02:42:18.893 回答