如何使用windows/cygwin从CMakeLists.txt中切换Clion中的GCC和Clang

jkj*_*uio 10 c++ gcc clang clion

我放

 set(CMAKE_CXX_COMPILER           "/usr/bin/clang.exe")
Run Code Online (Sandbox Code Playgroud)

运行/清洁,运行/构建.

我收到链接错误,如:

undefined reference to `std::ios_base::Init::~Init()'
: undefined reference to `__gxx_personality_v0'
Run Code Online (Sandbox Code Playgroud)

据推测,还有其他变量需要改变.尝试添加-lstdc++CMAKE_CXX_FLAGS,但没有什么不同.

例如,是否存在CLion方式而不是CMake方式?

谢谢.

mar*_*o.m 13

使用CMake指定编译器有点微妙.虽然您使用的方法,在CMakeLists.txt中设置CMAKE_CXX_COMPILER,但它是CMake常见问题解答中最不推荐的方法.

CLion支持CMake FAQ的方法2 :-D在cmake调用中使用.在CMakeLists.txt中设置变量无效.

在Mac上,转到 Preferences

在Linux/Windows上,转到 File | Settings

然后Build, Execution, Deployment | CMake | CMake options输入文字:

-D CMAKE_C_COMPILER=/path/to/c_compiler
-D CMAKE_CXX_COMPILER=/path/to/c++_compiler
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅CLion FAQ.

另请注意,当您更改编译器时,您必须使CLion cmake缓存无效并重新启动,请参阅我的答案如何在Clion中清除CMake缓存?.

编辑

在我写完这个答案后,CLion添加了对多个构建目录的支持,正如@rubenvb在评论中指出的那样.这是另一条调查途径.