# CMake
# 指定 CMake
最低版本依赖
cmake_minimum_required(VERSION 3.0) |
# 项目名称
project(project_name VERSION v1) |
# 生成可执行文件
add_executable(project_name 源文件) |
# 构建、编译与运行
> mkdir build | |
> cmake .. | |
> make |
# 搜索源文件
# 参考博文:
- [1] CMake Tutorial — Mastering CMake
# cmake
的使用
cmake
是一个项目构建工具,并且是跨平台的。
# CMake 使用 #来进行注释, 使用 #[[]] 来注释一整块代码 |
cmake_minimum_required(VERSION 3.0)
:指定最低版本(非必要,推荐)project
:定义工程文件名,(可指定工程版本,工程描述、web 主页,支持的语言)project()
add_executable
add_executable(可执行程序名 源文件名称)
# 源文件名称可能是一个个可能是多个,如果有多个可以用空格或;间隔
执行
cmake
cmake CMakeLists.txt文件所在路径
make
# 变量
# 使用 set 来定义一个变量 | |
set(var value) | |
# 使用 ${变量名} 来取变量值 |
指定使用的 C++ 标准
方法一:
CMakeLists.txt
中指定set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD 17)
方法二:执行
cmake
命令值指定
cmake CMakeLists.txt文件路径 -DCMAKE_CXX_STANDARD=11
cmake CMakeLists.txt文件路径 -DCMAKE_CXX_STANDARD=14
cmake CMakeLists.txt文件路径 -DCMAKE_CXX_STANDARD=17
指定输出路径
set(home /home/robin/linux/sort)
set(EXECUTABLE_OUTPUT_PATH ${home}/bin)
# 搜索文件
aux_source_directory(dir var)
:查找某个路径下的所以源文件file(GLOB/GLOB_RECURSE var 要搜索的文件路径和文件类型)
# 两个宏定义 | |
${PROJECT_SOURCE_DIR} # CMakeLists.txt 所在的路径 | |
${CMAKE_CURRENT_SOURCE_DIR} # CMakeLists.txt 所在的路径 |
# 包含头文件
include_directories(header_path)
# 制作静态库与动态库
制作静态库:
add_libray(库名称 STATIC 源文件1 源文件2 )
制作动态库:
add_libray(库文件 SHARED 源文件1 源文件2)
LIBRARY_OUTPUT_PATH
:用于指定生成的动态库 / 静态库的存放路径,动态库也可以使用EXECUTABLE_OUTPUT_PATH
# 包含库文件(静态库文件与动态库文件)
链接静态库:
link_libraries(静态库名称)
静态库名称可以是全称,例如
libxxx.a
;也可以是掐头去尾之后的名称xxx
链接动态库:
target_link_libraries(目标文件 动态库文件)
如果静态库或动态库不是系统提供的,需要指定静态库 / 动态库的路径;
link_directories(对应的路径)
# 日志
message([STATUS|WARNING|AUTHOR_WARNING|FATAL_ERROR|SEND_ERROR] 输出的消息) |
消息类型:
(无)
:重要消息STATUS
:主要消息WARNING
:CMake
警告AUTHOR_WARNING
:CMake
警告SEND_ERROR
:CMake
错误,跳过生成过程FATAL_ERROR
:CMake
错误,终止所以处理过程
# 变量操作
# 字符串拼接
使用
set
set(res ${var1} ${var2})
使用
list
list(APPEND 变量名 需要追加的字符串)
# 字符串移除
list(REMOVE_ITEM 变量名 移除的元素值) |
# 获取列表的长度
# 获取列表内元素个数,而非字符串长度 | |
list(LENGTH 变量名 outputVar) |
# 获取列表指定索引值
list(GET 变量名 <element index> ... <output variable>) |
索引从 0 开始编号,索引也可以是负数,比如 -1
表示最后一个元素;超过列表长度则会报错
# 指定连接符拼接
list(JOIN 变量名1 变量名2 ... 连接符 <output variable>) |
# 查找指定元素
# 在列表指定位置插入元素
# 在列表头部插入元素
# 在列表尾部元素删除
# 移除列表头部元素
# 移除指定索引的元素
# 移除列表中的重复元素
# 列表翻转
# 列表排序
# 宏定义
# 内置宏
VERSION
:CMake
版本号CMAKE_CXX_STANDARD
:C++
标准EXECUTABLE_OUTPUT_PATH
:可执行文件的输出路径