
1、cmake_minimum_required
含义: CMake最低版本号要求
cmake_minimum_required(VERSION 3.10) 最低版本是3.10
2、project
含义:项目名称
project(simple VERSION 1.0 LANGUAGES CXX C)
项目名称 : simple
版本号 : 1.0
支持语言 : CXX(C++)、C
3、set
含义:某一个变量赋值
set(testVariables OFF)
给testVariables赋值为OFF
4、add_subdirectory
含义:将子目录下的CMakeLists.txt文件(整个子目录)整体编译
├── CMakeLists.txt #父目录的CMakeList.txt
├── main.cpp #源文件,包含main函数
├── sub #子目录
├── test
└── CMakeLists.txt #子目录的CMakeLists.txt
└── test.h #子目录头文件
└── test.cpp #子目录源文件
add_subdirectory(sub/test)
将sub/test目录下的CMakeLists.txt文件与主工程一起编译
5、include
含义:导入文件
include(text.cmake)
导入编写的text.cmake文件
.cmake : 将一些通用的函数功能封装到到一个指定的文件中,可以达到代码复用的目的
6、add_library
含义: 将指定的源文件生成链接文件,然后添加到工程中
text_project( 项目名称)
├── CMakeLists.txt #父目录的CMakeList.txt
├── main.cpp #源文件,包含main函数
├── sub #子目录
├── test
└── CMakeLists.txt #子目录的CMakeLists.txt
└── test.h #子目录头文件
└── test.cpp #子目录源文件
set(LINK_SOURCE sub/test/test.h sub/test/test.cpp .........)
给LINK_SOURCE 赋值为sub/test 目录下的所有的.h和.cpp文件
add_library(text_project STATIC LINK_SOURCE)
将sub/test/所有文件编译为.a(静态库)添加到text_project项目中
add_library(text_project SHARED LINK_SOURCE)
将sub/test/所有文件编译为.so(动态库)添加到text_project项目中
7、target_link_libraries
含义:将目标文件与库文件进行链接
target_link_libraries( lib1 lib2 lib3)
链接关系lib1->lib2->lib3
target_link_libraries( lib1 public libs2)
PRIVATE, PUBLIC, INTERFACE 参数讲解:
在public后面的库会被Link到target中,并且里面的符号也会被导出,提供给第三方使用。
在private后面的库仅被link到你的target中,并且终结掉,第三方不能感知你调什么库
在interface后面引入的库不会被链接到你的target中,只会导出符号
友情链接 : https://blog.csdn.net/znsoft/article/details/119035578
8、target_include_directories
含义: 让目标目录添加此目录下的列表
text_project( 项目名称)
├── CMakeLists.txt #父目录的CMakeList.txt
├── main.cpp #源文件,包含main函数
├── sub #子目录
├── test
└── CMakeLists.txt #子目录的CMakeLists.txt
└── test.h #子目录头文件
└── test.cpp #子目录源文件
target_include_directories(text_project sub/test)
text_project工程添加sub/test目录下列表
9、find_library
含义:查找库,找到了就使用缓存,找不到下次还会接着搜索
find_library(log_util log)
把log的库缓存在log_util
10、set_target_properties
含义:给目标的设置多个属性
set_target_properties(demo KEY 17 SWITCH ON)
给demo设置KEY=17和SWITCH = ON 属性
11、add_executable
含义:将源文件转变为可执行文件
add_executable(demo demo.cpp)
把demo.cpp 转变为可执行文件并添加到demo
参考文档:https://cmake.org/cmake/help/v3.0/manual/cmake-commands.7.html




