- 基本语法格式:指令(参数1 参数2 …)
- 参数之间使用空格或分号分开;
- 指令是大小写无关的,但是参数是大小写相关的
- cmake_minimum_required
- 用来指定cmake的最小版本要求cmake_minimum_required(VERSION 2.18.0)
- project
- 定义工程名
- set
- 定义变量,set(变量名 value1 value2 …)
- include_directories(dir1 dir2 …)
- 添加多个头文件搜索路径,绝对路径也可以,相对路径也可以,这个必须要是文件夹,相当于g++编译时的-I
- link_directiories(dir1 dir2 …)
- 添加多个库文件搜索路径,相当于g++编译时的-L参数
- add_subdirectory
- 添加子目录,子目录中需要有一个CMakeList.txt,而且这个可以指定子目录编译时输出文件的位置。
- include
- 用来加载cmake文件,可以理解为将一些特定的配置写到独立的文件中,通过include加载,其中交叉编译工具链就是通过这种实现的。
- add_compile_options
- 添加编译参数,当然也可以通过SET直接修改内置变量CMAKE_C_FLAGS和内置变量CMAKE_CXX_FLAGS,因为add_compile_options最终也是修改这两个变量
- ADD_DEFINITIONS
- 添加宏,相当于g++中的-D,可以通过这种方式控制在编译的时候是否需要某些代码,比如编译Debug版本时,可能需要一些测试代码,Release版本时,则不需要
- add_library
- 生成库文件 add_library(库名 [SHARED|STATIC] source1 source2 …)
- add_executable
- 生成可执行文件 add_library(可执行文件 source1 source2 …)
- target_include_directories
- 指定target包含的头文件路径(相当于指定g++编译器-l参数)
- 语法target_include_directories(target [INTERFACE|PUBLIC|PRIVATE] dir1 dir2 …)
- target_link_libraries
- 指定target链接的库文件(相当于指定g++编译器中的-l参数)