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