cmake基础

目录

安装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 --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(
    lib
)

指定要链接的库文件路径

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

文章标题:cmake基础

字数:907

本文作者:常丁方

发布时间:2020-07-23, 21:26:14

最后更新:2021-08-25, 18:31:45

原始链接:http://changdingfang.com/2020/07/23/notes/cpp/cmake-base/
×

喜欢就点赞,疼爱就打赏

资源