📜  cmake 定义标准 c++ (1)

📅  最后修改于: 2023-12-03 14:59:57.137000             🧑  作者: Mango

使用 CMake 定义标准 C++

如果你打算编写 C++ 程序并希望使用 CMake 来构建它们,那么这篇文章就是为你准备的。我们将介绍使用 CMake 来编译 C++ 程序所需的基本步骤。

CMake 基础知识

CMake 是一个跨平台的构建系统工具,它可以自动生成 Makefile、Visual Studio Project 或 Xcode Project,以便在不同的环境中构建你的代码。

在开始使用 CMake 之前,你需要安装它。你可以从 CMake 官方网站 获取最新的 CMake 版本。

最小化的 CMakeList.txt 文件

创建可构建的 C++ 程序最少需要一个名为 CMakeLists.txt 的文件。以下是一个最小化的 CMakeLists.txt 文件示例:

# 最低版本的 CMake
cmake_minimum_required(VERSION 3.5)

# 项目名称
project(demo)

# 添加可执行文件
add_executable(demo main.cpp)

上述 CMakeLists.txt 将用于构建一个名为 demo 的可执行文件,其中 main.cpp 是入口点。

添加编译选项

CMakeLists.txt 文件中的 add_executable 命令可以接受多个参数,可以将编译选项包含在其中:

add_executable(demo main.cpp)
target_compile_features(demo PRIVATE cxx_std_11)
target_compile_options(demo PRIVATE -Wall -Wextra -pedantic)

上述代码将在最初的 add_executable 命令中添加了编译选项:C++11 标准、-Wall、-Wextra 和 -pedantic。

添加库

在 CMake 中,可以使用 add_subdirectoryadd_library 命令来添加库。例如:

# 添加库目录
add_subdirectory(lib)

# 生成 Demo 可执行程序
add_executable(demo main.cpp)

# 链接库
target_link_libraries(demo PRIVATE my_lib)
版本控制

CMake 可以通过设置 CMakeLists.txt 文件中的变量来自动检测、设置和管理版本控制信息:

# 版本信息
set(MY_PROJECT_VERSION_MAJOR 1)
set(MY_PROJECT_VERSION_MINOR 0)
set(MY_PROJECT_VERSION_PATCH 0)
set(MY_PROJECT_VERSION ${MY_PROJECT_VERSION_MAJOR}.${MY_PROJECT_VERSION_MINOR}.${MY_PROJECT_VERSION_PATCH})

# 配置头文件
configure_file(
    ${PROJECT_SOURCE_DIR}/config.h.in
    ${PROJECT_BINARY_DIR}/config.h
)

# 添加 include 目录
include_directories(${PROJECT_BINARY_DIR})

上述代码将生成版本信息并配置一个头文件,该头文件包含版本信息。

总结

这篇文章介绍了使用 CMake 定义标准 C++ 的基本步骤。我们看到了如何添加编译选项、添加库、进行版本控制等。

CMake 的强大之处在于它可以通过随时添加更多的命令来实现适合你的项目的构建过程,我们鼓励你多参考官方文档,以便更好地理解 CMake 的强大之处。