文章目录
1.概述
2.注释
- 单行注释:
#
- 多行注释:
#[[ ]]
3.命令
2.1cmake_minimum_required
- 语法:
cmake_minimum_required(版本号)
- 例如:
cmake_minimum_required (VERSION 2.8)
2.2project
- 语法:
project(项目名称)
# PROJECT 指令的语法是:
project(<PROJECT-NAME> [<language-name>...])
project(<PROJECT-NAME>
[VERSION <major>[.<minor>[.<patch>[.<tweak>]]]]
[DESCRIPTION <project-description-string>]
[HOMEPAGE_URL <url-string>]
[LANGUAGES <language-name>...])
- 例如:
project (Demo2)
2.3add_executable
- 语法:
add_executable(可执行文件名称,源文件列表)
- 例如:
add_executable(demo, main.cpp, demo.cpp)
2.4aux_source_directory
- 语法:
aux_source_directory(<dir> <variable>)
- 例如:
aux_source_directory(. DIR_SRCS);
2.5file
- 语法:
file(GLOB/GLOB_RECURSE 变量名 要搜索的文件路径和文件类型)
- GLOB: 将指定目录下搜索到的满足条件的所有文件名生成一个列表,并将其存储到变量中。
- GLOB_RECURSE:递归搜索指定目录,将搜索到的满足条件的文件名生成一个列表,并将其存储到变量中。
2.6include_directories
2.7制作静态库或者动态库
2.7.1制作静态库
- 语法:
add_library(库名称 STATIC Makefile地址)
- 例子:
add_library(cale STATIC ${SRC_LIST})
2.7.2制作动态库
- 语法:
add_library(库名称 SHARED 源文件1 [源文件2] ...)
- 例子:
add_library(cale SHARED ${SRC_LIST})
2.6set
2.6.1 语法:
# SET 指令的语法是:
# [] 中的参数为可选项, 如不需要可以不写
SET(变量名 变量值 [CACHE TYPE DOCSTRING [FORCE]])
- 例如:
set(SRC_LIST main.cpp a.cpp b.cpp)
2.6.2 如何使用变量:`
2.6.3指定使用的C++版本
#增加-std=c++11
set(CMAKE_CXX_STANDARD 11)
#增加-std=c++14
set(CMAKE_CXX_STANDARD 14)
#增加-std=c++17
set(CMAKE_CXX_STANDARD 17)
- 在执行 cmake 命令的时候指定出这个宏的值(通常不用)
#增加-std=c++11
cmake CMakeLists.txt文件路径 -DCMAKE_CXX_STANDARD=11
#增加-std=c++14
cmake CMakeLists.txt文件路径 -DCMAKE_CXX_STANDARD=14
#增加-std=c++17
cmake CMakeLists.txt文件路径 -DCMAKE_CXX_STANDARD=17
2.6.4指定输出的路径
set(EXECUTABLE_OUTPUT_PATH 路径)
2.6.5变量操作
2.7message
- 语法:
message([STATUS|WARNING|AUTHOR_WARNING|FATAL_ERROR|SEND_ERROR] 输出内容|变量)
- 例如:
message(WARNING "这是一个警告")
2.8链接静态库文件
- 连接库语法:
link_libraries(<static lib> [<static lib>...])
- 参数1:指定出要链接的静态库的名字,可以是全名 libxxx.a,也可以是掐头(lib)去尾(.a)之后的名字 xxx
- 参数 2-N:要链接的其它静态库的名字
- 链接库文件语法:
link_directories(<lib path>)
2.9链接动态库文件
- 语法:
target_link_libraries(可执行文件名称 库名称...)
- 可执行文件名称: 对应的是最终生成的可执行程序的名字
- 库名称:这是可执行程序要加载的动态库,这个库是系统提供的线程库,全名为 libpthread.so,在指定的时候一般会掐头(lib)去尾(.so)。
4.生成可执行文件
- 执行cmake ./CMakeLists.txt所在的路径
- 生成Makefile后,执行make
- 生成可执行文件