# 设置cmake的最低版本

cmake_minimum_required(VERSION 3.10) 最低版本为3.10

# 指定工程名称

project( [ projectName ]) 最后的可执行文件也是这个名字

# 输出信息

message( [ message ] )

# 设置变量值

set( [ variableName ] [ value ])

# 搜索文件

file( GLOB/GLOB_RECURSE [ variableName ] [ path ])

file( GLOB srcFile ${PROJECT_SOURCE_PATH}\src\*.cpp)
# 搜索项目位置下\src中的所有.cpp文件,并保存到srcFile变量中

# 添加子项目

add_subdirectory( [ path ] )

# 头文件搜索路径

include_directories( [ path ] )

# 库搜索路径

link_directories( [ path ] )

# 链接库

link_libraries( [ libraryName ] )

# 构建库文件

add_library( [ libraryName ] [ 类型 ] [ filePath ]) add_library( libraryName OBJECT main.cpp) # 生成obj文件 add_library( libraryName STATIC main.cpp) # 生成静态库 add_library( libraryName SHARED main.cpp) # 生成动态库

# 构建可执行程序

add_executable( [ executableName ] [ fileName ]) 由fileName编译而成

# 可见性

PRIVATE:只有目标自己会使用这些编译参数。 PUBLIC:目标自己和其他依赖这个目标的目标都会使用这些编译参数。 INTERFACE:只有其他依赖这个目标的目标会使用这些编译参数。

# 自动生成并链接库文件

target_link_libraries( [ targetName ] [ PRIVATE | PUBLIC | INTERFAACE ] [ libraryName ])

# 向编译器传递参数

add_compile_options( [ targetName ] [ PRIVATE | PUBLIC | INTERFACE ] [ options ] )

# 创建和使用变量

set( [ variableName ] [ value ]) ${ variableName }

# 寻找第三方库

find_package( [ packageName ] REQUIRED)

# cmake宏

PROJECT_SOURCE_DIR # 项目位置 LIBRARY_OUTPUT_PATH # 库文件输出位置 EXECUTABLE_OUTPUT_PATH # 可执行文件的输出位置 CAMKE_CURRENT_SOURCE_DIR # 当前CMakeLists.txt文件所在位置 CAMKE_CXX_STANDARD # 当前C++标准版本 PROJECT_NAME # 项目名称 CMAKE_CXX_FLAG # 传递给编译器的参数(传递多个参数时要分开并用""括起来) CMAKE_BULID_TYPE # 编译类型如debug / release

# 命令行参数

-B [ dir ] 指定构建目录 -G [ generatorName ] 指定生成器 -D [ variableName ] = [ value ] 设置变量

# 流程控制

if() elseif() else() endif() 数值比较(字符串比较就是前面加STR) LESS 小于 GREATER 大于 EQUAL 等于 LESS_EQUAL 小于等于 GREATER_EQUAL 大于等于 逻辑 NOT AND OR