如何在CMakeLists.txt中使用windows/cygwin切换GCC和Clang
How to switch between GCC and Clang in Clion from within CMakeLists.txt using windows/cygwin
我把
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
,但没有不同。
谢谢。
使用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
还请注意,当你改变编译器时,你将不得不使cmake缓存无效并重新启动,参见我的回答如何在cmake中清除cmake缓存?
编辑在我写下这个答案之后,正如@rubenvb在评论中指出的那样,CLion增加了对多个构建目录的支持。
事实上,最新版本的Clions 2018.2运行在windows 10环境下的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-w64x86_64-8.1.0-win32-seh-rt_v6-rev0或mingw-w64i686-8.1.0-win32- dwarpe -rt_v6-rev0
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)
- 与互斥锁相比,旋转锁可以保证上下文切换
- 如何在运行中期切换GTK CSS style_context
- 线程,如果else语句,都是错误的上下文切换后,会发生什么
- Windows/Cygwin - 不能使用 pybind11 - 犯错误
- 如何在cpp文件之间切换窗口?在Qt中
- 在cygwin中运行c++脚本时发生错误
- 在cygwin中测试新的boost安装时出现cpp错误
- 如何切换整数的 N 位
- 切换大小写后如何阻止变量重置?
- 如何配置Visual Studio Code以使用cygwin,cmake和gcc进行调试
- C++ 程序菜单使用做同时和切换
- 在线程中读取无符号整数时,c++ 位是否以原子方式切换?
- 在 C++ 中运行时调用模板时,是否可以切换模板的参数类型?
- 为什么这个选择排序算法仍然切换一个元素,当它已经是其他元素中最小的元素时?
- 为什么切换 for 循环的顺序会显著改变执行时间?
- MFC:我们如何轻松地从CTreeCtrl切换到CTreeView?
- pthread_spinlock是否会导致从用户空间切换到内核空间
- GLFW 切换布尔切换
- 使用cygwin从Nmake切换到MinGW
- 如何在CMakeLists.txt中使用windows/cygwin切换GCC和Clang