配置 cmake 以根据环境选择编译器
Configure cmake to choose compiler based on environment
我当前的项目目录看起来像
myproject
/-build
/-include
/-somefile.h
/-somefile2.h
/-myproject.cpp
/-CMakeLists.txt
和当前的 CMakeLists.txt 看起来像:
cmake_minimum_required (VERSION 3.1)
project (myproject)
add_executable(myproject myproject.cpp)
set(CMAKE_BINARY_DIR ${CMAKE_SOURCE_DIR}/build)
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR})
set(PROJECT_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/include)
include_directories("${PROJECT_INCLUDE_DIR}")
include_directories("${PROJECT_SOURCE_DIR}")
我想在x64Windows和x64Linux环境中构建这个项目,同时保留单个cmake文件。目前我在Win中有Visual Studio 13 CE,在Linux中有gcc。Cmake是否有可能根据操作系统智能地选择正确的编译器?我应该为此对CMakeLists进行哪些更改?
如果这很重要,我正在使用 STL 和原版C++(没有依赖操作系统的库)等普通东西。谢谢
您希望为每个编译器添加条件代码:
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
# Set the C++ and linker flags to GCC specifics here.
elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
# Set the C++ and linker flags to VC++ specifics here.
elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
# Set the C++ and linker flags to Clang specifics here.
elseif()
至少在 Linux 上会自动设置正确的编译器。在窗户上我不知道。但是,您始终可以通过环境变量CC
和CXX
覆盖选定的编译器。这将更改 cmake 配置。这些更改只会影响新的生成配置。因此,在选择新编译器之前,不要忘记删除旧的编译器。
编辑:编译器当然必须在您的PATH
变量中。否则CMake将无法正确找到它。
相关文章:
- 如何使用默认参数等选择模板专业化
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- 选择要调用的构造函数
- C++选择排序算法中的逻辑错误
- 枚举环境变量的惯用C++14/C++17方法
- QTreeView幻灯片多选后无法使用单击选择
- 无法获取菜单选择以运行函数.C++
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 在C++中,如何通过几种类型从元组中选择多个元素
- 讨论 - 创建矩阵时的数组与向量的向量 - 什么是最实用的选择
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 对可变参数使用声明.如何选择正确的功能
- 选择选举获胜者的程序
- 如何选择在 csv 文件中输出的位置
- 根据用户回答声明"Players"。用户选择玩家数量。播放器是结构体
- 程序在尝试猜测它选择的随机数时进入无限循环?
- 选择特定版本的 Visual Studio 命令行工具包,并根据特定版本的C++运行时环境编译文件
- 使用opencv在受控环境中进行视频跟踪的跟踪标记和跟踪算法选择
- 配置 cmake 以根据环境选择编译器
- 选择“多核环境下的v/s多线程”