# 设置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