我把
set(CMAKE_CXX_COMPILER "/usr/bin/clang.exe")
运行/清洁,运行/构建。
我收到链接错误,如:
undefined reference to `std::ios_base::Init::~Init()'
: undefined reference to `__gxx_personality_v0'
据推测,还有其他变量需要改变。尝试将-lstdc++
添加到CMAKE_CXX_FLAGS
,但没有不同。
例如,是否存在CLion方式而不是CMake方式?
感谢。
答案 0 :(得分:13)
使用CMake指定编译器有点脆弱。虽然您使用的方法在CMakeLists.txt中设置CMAKE_CXX_COMPILER,但它是CMake FAQ中推荐最少的方法。
CLion支持CMake FAQ的方法2:在cmake调用中使用-D
。在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
有关详细信息,请参阅CLion FAQ。
另请注意,更改编译器时,必须使CLion cmake缓存无效并重新启动,请参阅How to clear CMake cache in Clion?上的答案。
修改
在我写完这个答案后,CLion添加了对多个构建目录的支持,正如@rubenvb在评论中指出的那样。这是另一种调查途径。
答案 1 :(得分:0)
事实上,在Windows 10环境中运行的最新版本的Clions 2018.2可与LLVM clang版本6 /6.0.1甚至7.0以及GCC mingw x64 win32特定变体一起使用。
链接器默认设置为GCC,而不是Visual Studio
我想它也可以在cygwin上使用相同的设置,因为以下设置也经过测试,也可以在许多流行的c ++ IDE上使用。
x64或32个特定的GCC mingw版本经过测试可在Clions 2018.2上运行
\ mingw-w64 \ x86_64-8.1.0-win32-seh-rt_v6-rev0或mingw-w64 \ i686-8.1.0-win32-dwarf-rt_v6-rev0
CMake构建设置如下
cmake_minimum_required(VERSION 3.10)
project(project_name )
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_C_COMPILER "c:/llvm/bin/clang.exe")
set(CMAKE_CXX_COMPILER "c:/llvm/bin/clang++.exe")
// target i686-pc-windows-gnu for 32bit
set(CL_COVERAGE_COMPILE_FLAGS "-v -target x86_64-pc-windows-gnu -Wall -Wextra -std=gnu++17")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CL_COVERAGE_COMPILE_FLAGS}" )
add_executable(project_name yourcpp.cpp)