CMAKE支持c++11的两种方式

全局设置

set (CMAKE_CXX_STANDARD 11)

注意:这种方式仅适用于cmake3.1之后

如果是老版本,稍微麻烦一些

include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
elseif(COMPILER_SUPPORTS_CXX0X)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
else()
        message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()

根据Target设置

set_property(TARGET tgt PROPERTY CXX_STANDARD 11)

注意:这种方式仅适用于cmake3.1之后

### 使用 CMake 构建 C++ 项目的流程 CMake 是一种强大的跨平台构建工具,能够帮助开发者高效地管理和构建复杂项目。以下是关于如何使用 CMake 来构建 C++ 项目的详细介绍。 #### 配置 `CMakeLists.txt` 文件 在任何基于 CMake 的项目中,核心配置文件是 `CMakeLists.txt`。该文件定义了项目的结构以及编译选项。首先,在顶层目录下创建一个名为 `CMakeLists.txt` 的文件并添加以下基本指令: - **指定最低版本**: 调用 `cmake_minimum_required()` 命令以设定所需的最小 CMake 版本。这是必要的一步,因为它确保后续使用的功能与当前安装的 CMake 兼容[^2]。 ```cmake cmake_minimum_required(VERSION 3.10) ``` - **初始化项目**: 使用 `project()` 定义项目名称及其支持的语言。这一命令通常紧随 `cmake_minimum_required()` 后面,并且对于整个项目的设置至关重要。 ```cmake project(MyProject LANGUAGES CXX) ``` - **声明可执行文件**: 利用 `add_executable()` 将特定源码列表组合成最终的目标二进制文件。例如,如果存在单个源文件 `main.cpp`,可以这样写: ```cmake add_executable(myExecutable main.cpp) ``` 当涉及多个源文件或者头文件时,则需进一步扩展上述方法。比如有如下两个文件:`hello.h` 和 `hello.cpp`,则可以在同一 `CMakeLists.txt` 中加入它们作为依赖项[^3]。 ```cmake add_executable(myExecutable main.cpp hello.cpp) target_include_directories(myExecutable PRIVATE ${PROJECT_SOURCE_DIR}) ``` 这里还增加了 `target_include_directories()` 函数用来指明哪些路径应该被纳入到预处理器查找范围之中,从而让 `.cpp` 文件能顺利找到对应的头文件。 #### 执行构建操作 完成以上步骤后即可开始实际构建过程: 1. 创建一个新的子目录专门存放生成物(推荐做法),如命名为 `build/`. ```bash mkdir build && cd build ``` 2. 运行 cmake 工具读取父级目录中的 `CMakeLists.txt`, 并依据所选环境自动生成适合本地系统的 Makefile 或解决方案文件. ```bash cmake .. ``` 3. 接下来按照提示继续完成具体编译工作, 对于 Unix-like 系统来说一般就是简单一句: ```bash make ``` 至此就完成了从零搭建至成功产出成果的整体环节描述[^1]. ```python print("Build process completed successfully.") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值