学习参考:6-3 CMake重要指令和变量_哔哩哔哩_bilibili
CMake
作用是用于跨平台处理代码,使用CMake去替代g++指令,在项目多文件操作的时候节省很多步骤指令
语法特性
-
基本语法格式:指令(参数1 参数2 ...)
- 参数使用括弧括起
- 参数之间使用空格或者分号隔开
-
指令是大小写无关,参数和变量是大小写的相关
-
变量使用 ${} 方式取值,但是在IF控制语句中是直接使用变量名的
常用重要指令
- cmake_minimum_required
- 作用:指定cmake最小版本要求
- 自行去查看自己cmake版本然后进行设定
- 语法eg: cmake_minimum_required(VERSION 3.16.3)
![]()
- project
- 作用:定义工程名称,并且可指定工程支持的语[ 可选 ]
- 语法eg: project(projectname [cxx] [c] [java])
![]()
- set
- 作用:显示定义变量
- 这个语法不好描述,看看B站博主的图吧
![]()
- include_directories
- 作用:向工程添加多个特定的库文件搜索路径(相当于指定g++编译器的-I参数)
- 语法: include_directories([AFTER | BEFORE] [SYSTEM] dir1 dir2 ...)
![]()
- link_directories
- 作用:向工程添加多个特定的库文件搜索路径(相当于指定g++编码器的-L参数)
- 语法:link_directories(dir1 dir2 ...)
![]()
看看博主给的示例吧,没有生成静态库,没有调用静态库就懒得搓了
- add_library
- 作用:生成库文件
- 语法:add_library(libname [SHARED | STATIC | MODULE] [EXCLUDE_FROM_ALL] source1 source2 ... sourceN)
- SHARED:动态库
- STATIC:静态库
- source: 源文件
![]()
- add_compile_options
- 作用:添加编译参数
- 语法:add_compile_options(<option> ...)
![]()
- add_executable
- 作用:生成可执行文件
- 语法:add_executable(exename source1 source2 ... sourceN)
![]()
- target_link_libraries
- 作用:为target 添加需要链接的共享库(相当于指定g++编译器-I参数)
- 语法: target_link_libraries( target library1<debug | optimized> library2...)
![]()
上图展示了使用源码生成库,再使用源码生成可执行文件,再将可执行文件与库链接起来
- add_subdirectory
- 作用:向当前工程添加存放源文件的子目录,并可以指定中间二进制和目标二进制存放的位置
- 语法:add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL])
![]()
- aux_source_directory
- 作用:发现一个目录下所有的源代码文件并将列表存储在一个变量中,这个指令临时被用来自动构建源文件列表
- 语法:aux_source_directory(dir VARIABLE)
![]()
常用变量
- CMAKE_C_FLAGS gcc编译选项
- CMAKE_CXX_FLAGS g++编译选项
![]()
- CMAKE_BUILD_TYPE 编译类型(Debug,Release)
![]()












