CMake之万能模板

本文介绍了如何使用CMake进行项目配置,包括设置最小版本、声明项目、设定语言标准、构建类型,以及添加库和源文件。还涉及了安装代码、测试代码的流程,并讲解了在多级目录结构中管理CMakeLists.txt文件的方法。最后提供了一个简单的CMake模板示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编译代码

  1. 在项目根目录下创建一个名为CMakeLists.txt的文件
  2. 指定cmake所需最低版本,如果使用的CMake版本低于该版本,则会发出致命错误
cmake_minimum_required(VERSION 3.20 FATAL_ERROR)
  1. 声明项目名称和支持的编程语言(必须)
project(cplusplus_test LANGUAGES CXX)
  1. 设置语言标准(可选)
set(CMAKE_CXX_STANDARD 20)  # 设置这一项可以替代set(CMAKE_CXX_FLAGS "-std=c++20")
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS ON)
  1. 设置编译类型(可选),默认可能为空,也有可能是其他
set(CMAKE_BUILD_TYPE "Debug")
  1. 使用set设置一些自定义变量或cmake变量(可选)
  2. 指示CMake创建一个或多个新目标:可执行文件或动态/静态库
add_library()     # 构建库
add_executable()  # 构建可执行文件
  1. 如果目标文件有要包含的头文件目录,则将头文件的目录添加到目标文件
target_include_directories(<target> <PRIVATE|PUBLIC|INTERFACE> <header_dir>)
  1. 如果目标文件有较多的源代码文件(.cpp等),需要添加到目标文件
target_sources(<target> <PRIVATE|PUBLIC|INTERFACE> <src_dir>)
  1. 如果目标文件有依赖,则将依赖库链接到目标文件,库文件可以省略前缀lib和后缀.so或.a
target_link_libraries(<target> <PRIVATE|PUBLIC|INTERFACE> <lib_name>)

安装代码

install()

测试代码

构建

  1. 创建build目录,在build目录下生成一堆文件
mkdir -p build
cd build ; cmake ..
# 或者通过以下方式代替上面的两步:
cmake -H. -Bbuild
# 开始编译
cmake --build .  # 或者可以直接 make

多级目录

多级目录下创建CMake,主目录下和各子目录下创建CMakeLists.txt文件

  1. 主目录CMake必需指令为上述步骤中的2,3,4,5,另外可以使用步骤6创建一些子目录用到的变量。
  2. 使用 add_subdirectory 包含子目录下的CMakeLists.txt
  3. 子目录下的CMakeLists.txt可以不需要2,3

其他无差别

简单模板

cmake_minimum_required(VERSION 3.20)
project(my_grpc_demo LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 14)

# 根据需要,设置成"Debug"或"Release"
set(CMAKE_BUILD_TYPE "Debug")

add_executable(my_grpc_demo)

# 这里写上依赖的gRPC和自己的头文件路径
set(HEADER_DIR "/home/iLearning/code/gtest/gtest_1.13.0/x86_64/include/")
target_include_directories(
    my_grpc_demo
    PUBLIC
    ${HEADER_DIR}
)

# 这里写上依赖的so的路径
set(LIBRARY_DIR "/home/iLearning/code/gtest/gtest_1.13.0/x86_64/lib/libgtest.a")
target_link_libraries(
    my_grpc_demo
    PUBLIC
    ${LIBRARY_DIR}
)

# 这里是你自己的cpp文件
file(GLOB CPP_FILE /home/iLearning/code/CMake/practice/*.cpp)

target_sources(
    my_grpc_demo
    PUBLIC
    ${CPP_FILE}
)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值