cmake简明教程+常用命令总结+示例

PS:  CMakeLists.txt,这个文件是 cmake 的构建定义文件,文件名是大小写相关的,如果工程存在多个目录,需要确保每个要管理的目录都存在一个CMakeLists.txt。

cmake常用命令

基本语法规则

  • 变量使用${ }方式取值,但是在 IF 控制语句中是直接使用变量名
  • 指令(参数 1 参数 2...) 参数使用括弧括起,参数之间使用空格或分号分开。
    以ADD_EXECUTABLE 指令为例,如果存在另外一个 func.c 源文件,就要写成:
ADD_EXECUTABLE(hello main.c func.c)或者
ADD_EXECUTABLE(hello main.c;func.c)
  • 指令是大小写不相关的。参数和变量 大小写相关的。(最好养成自己固定的编写风格)

常用指令:

  • CMAKE_MINIMUM_REQUIRED :
    CMAKE_MINIMUM_REQUIRED(VERSION versionNumber [FATAL_ERROR])
    功能: 指定cmake编译器的最小版本
    CMAKE_MINIMUM_REQUIRED(VERSION 3.5)
  • PROJECT :
    PROJECT(projectname [CXX] [C] [Java])
    功能: 可以用这个指令定义工程名称,并可指定工程支持的语言
    PROJECT(DEMO)
  • SET :
    SET(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]])
    功能: SET 指令可以用来显式的定义变量。
    SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)也可以定义成:
    SET(SRCS main.c func1.c func2.c)
  • AUX_SOURCE_DIRECTORY :
    AUX_SOURCE_DIRECTORY(dir VARIABLE)
    功能: 发现一个目录下所有的源代码文件并将文件列表存储在当前的变量中
    AUX_SOURCE_DIRECTORY(. DIR_LIB_SRCS)
  • ADD_SUBDIRECTORY :
    ADD_SUBDIRECTORY(source_dir [binary_dir] [EXCLUDE_FROM_ALL])
    功能: 用于向当前工程添加存放源文件的子目录. 也可以理解为去运行子目录下的CMakeLists.txt
    ADD_SUBDIRECTORY(./mylib)
  • ADD_LIBRARY :
    ADD_LIBRARY(libname [SHARED|STATIC|MODULE] [EXCLUDE_FROM_ALL] source1 source2 ... sourceN)
    功能: 将源文件编译成库
    ADD_LIBRARY(Mylib ${SRCS})   //默认静态库
    ADD_LIBRARY(Mylib SHARED ${SRCS})   //动态库
  • INCLUDE_DIRECTORIES :
    INCLUDE_DIRECTORIES([AFTER|BEFORE] [SYSTEM] dir1 dir2 ...)
    功能: 用让工程找到对应的头文件, 路径之间用空格分割
    INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/mylib)
  • LINK_DIRECTORIES :
    LINK_DIRECTORIES(directory1 directory2 ...)
    功能: 添加非标准共享库的搜索路径.
    LINK_DIRECTORIES(${PROJECT_SOURCE_DIR}/mylib)
  • TARGET_LINK_LIBRARIES :
    TARGET_LINK_LIBRARIES(target library1 <debug | optimized> library2 ...)
    功能: 为target添加需要链接的共享库.
    TARGET_LINK_LIBRARIES(demo Mylib)
  • MESSAGE :
    MESSAGE([SEND_ERROR | STATUS | FATAL_ERROR] "message to display"...)
    功能: 该命令用于向终端输出用户的定义信息,包含了三种类型:
    SEND_ERROR,产生错误,生成过程被跳过;
    SATUS ,输出前缀为 — 的信息;
    FATAL_ERROR,立即终止所有 cmake 过程.
    MESSAGE(STATUS "TOP DIR ==> " ${PROJECT_SOURCE_DIR})

详细教程见:戳此处可获取详细教程

三联加关注后,可私信博主免费获取↑↑↑↑↑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

☜@_@达奚黑雁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值