CMake之万能模板

编译代码

  1. 在项目根目录下创建一个名为CMakeLists.txt的文件,如果需要的话在各个子目录下创建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 --build .  # 或者可以直接 make

猜你喜欢

转载自blog.csdn.net/u010378559/article/details/130848070