目录
安装cmake
ubuntu 18.04.2安装cmake
- 下载二进制包
官网 - 解压
tar -zxpf cmake-3.18.1-Linux-x86_64.tar.gz
- 创建软连接
- 先把解压后的cmake转移到安装路径
sudo mv cmake-3.18.1-Linux-x86_64 /opt/cmake-3.18.1
- 查看旧的cmake路径
which cmake
我的是 /usr/local/bin/cmake
- 备份
sudo mv /usr/local/bin /usr/local/bin_cmake_back
- 创建软连接
sudo mkdir /usr/lcoal/bin sudo ln -sf /opt/cmake-3.18.1/bin/* /usr/local/bin/
- 先把解压后的cmake转移到安装路径
- 参看版本
cmake --version
cmake
CMakeLists.txt
CMakeLists.txt 的语法比较简单,由命令、注释和空格组成,其中命令是不区分大小写的。符号 # 后面的内容被认为是注释。命令由命令名称、小括号和参数组成,参数之间使用空格进行间隔。
CMAKE_MINIMUM_REQUIRED
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
指定使用的cmake版本为2.8
PROJECT
PROJECT(demo)
项目信息为demo
CONFIGURE_FILE
CONFIGURE_FILE(<input> <output>
[COPYONLY] [ESCAPE_QUOTES] [@ONLY]
[NEWLINE_STYLE [UNIX|DOS|WIN32|LF|CRLF] ])
复制一个<input>文件到一个<output>文件和替代变量值作为引用@VAR@或${VAR}在输入文件内容。每个变量引用将替换为变量的当前值,如果未定义变量,则替换为空字符串
ADD_EXECUTABLE
ADD_EXECUTABLE(demo main.cpp)
指定生成目标为demo, 将main.cpp编译成一个名称味道
demo
的可执行文件
AUX_SOURCE_DIRECTORY
AUX_SOURCE_DIRECTORY(<dir> <varibale>)
查找指定目录下的所有源文件, 并将结果存储在指定的变量中.
ADD_SUBDIRECTORY
ADD_SUBDIRECTORY(subdir)
指明本项目包含一个子目录subdir,这样subdir目录下的CMakeLists.txt文件和源代码将会被处理
ADD_LIBRARY
ADD_LIBRARY(<name> [STATIC | SHARED | MODULE]
[EXCLUDE_FROM_ALL]
[source1] [source2] [...])
生成链接库
LINK_DIRECTORIES
link_directories(
lib
)
指定要链接的库文件路径
TARGET_LINK_LIBRARIES
TARGET_LINK_LIBRARIES(<target> [item1] [item2] [...]
[[debug|optimized|general] <item>] ...)
添加链接库
指令中的是指通过add_executable()和add_library()指令生成已经创建的目标文件。而[item]表示库文件没有后缀的名字。默认情况下,库依赖项是传递的。当这个目标链接到另一个目标时,链接到这个目标的库也会出现在另一个目标的连接线上。这个传递的接口存储在interface_link_libraries的目标属性中,可以通过设置该属性直接重写传递接口
INSTALL
INSTALL (TARGETS Demo DESTINATION bin)
生成的Demo文件(可执行程序)将被复制到CMAKE_INSTALL_PREFIX路径下(CMAKE_INSTALL_PREFIX变量路径可以修改, 默认是/usr/local).
MESSAGE
MESSAGR(“hello world”)
MESSAGR(STATUS “hello world”)
打印消息, 可以添加状态如警告和正常输出 WARNING, STATUS
(无) = 重要消息;
STATUS = 非重要消息;
WARNING = CMake 警告, 会继续执行;
AUTHOR_WARNING = CMake 警告 (dev), 会继续执行;
SEND_ERROR = CMake 错误, 继续执行,但是会跳过生成的步骤;
FATAL_ERROR = CMake 错误, 终止所有处理过程
SET
待续
OPTION
待续
LIST用法
list(LENGTH <list><output variable>)
list(GET <list> <elementindex> [<element index> ...]<output variable>)
list(APPEND <list><element> [<element> ...])
list(FIND <list> <value><output variable>)
list(INSERT <list><element_index> <element> [<element> ...])
list(REMOVE_ITEM <list> <value>[<value> ...])
list(REMOVE_AT <list><index> [<index> ...])
ist(REMOVE_DUPLICATES <list>)
list(REVERSE <list>)
list(SORT <list>)
- LENGTH 返回list的长度
- GET 返回list中index的element到value中
- APPEND 添加新element到list中
- FIND 返回list中element的index,没有找到返回-1
- INSERT 将新element插入到list中index的位置
- REMOVE_ITEM 从list中删除某个element
- REMOVE_AT 从list中删除指定index的element
- REMOVE_DUPLICATES 从list中删除重复的element
- REVERSE 将list的内容反转
- SORT 将list按字母顺序排序
FILE
待续
IF ELSE
待续
TEST
- ADD_TEST
- SET_TESTS_PROPERTIES
待续
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 245292011@qq.com