cmake的常用语法

cmake 的注释

# 注释
#[[大段注释
第二行注释
第三行注释]]

cmake的log -message

cmake message

message(arg1 arg2 arg3 arg4)  # 会自动连起

message 多级别输出

message(FATAL_ERROR,"abc") # 最严重的错误,直接停止执行
message(SEND_ERROR,"aba") # cmake 继续运行,生成跳过
message(WARNING,"abc")
message(NOTICE,"abc")==message("abc") # 想用就用
message(STATUS,"abc") # 用户可能感兴趣的信息
message(VERBOSE,"abc")# 用户想知道的详细信息,默认不显示
message(DEBUG,"abc") # 项目本身开发人员使用信息,默认不显示
message(TRACE,"abc") # 项目开发人员非常低级别的细粒度信息,默认不显示

设置日志显示级别

cmake -S . -B build --log-level=VERBOSE

重定向

cmake -S . -B build --log-level=VERBOSE>log.txt

message中常用的check_xxx

CHECK_START 对应。CHECK_PASS或一个CHECK_FAIL

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Us3Ye3LP-1672999555637)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/cb3ba7d9-1f30-4fca-8cef-5d2b5f70c040/Untitled.png)]

message("=======================2.4=============================")
#开始查找
message(CHECK_START "查找xcpp")
#查找库xcpp的代码
# message消息缩进
set(CMAKE_MESSAGE_INDENT "--")

#嵌套查找
message(CHECK_START "查找xlog")
#查找xlog代码
message(CHECK_PASS "成功")

message(CHECK_START "查找xthreadpool")
message(CHECK_FAIL "失败")

#结束查找 查找失败
message(CHECK_FAIL "失败")

message输出成不同的颜色

# 105message_color/CMakeLists.txt
cmake_minimum_required(VERSION 3.20)
project(message_color)
#[[
\033[1;31;40m    <!--1-高亮显示 31-前景色红色  40-背景色黑色-->
\033[0m          <!--采用终端默认设置,即取消颜色设置-->
显示方式  
0                终端默认设置
1                高亮显示
4                使用下划线
5                闪烁
7                反白显示
8                不可见

前景色            背景色           颜色
---------------------------------------
30                40              黑色
31                41              红色
32                42              绿色
33                43              黃色
34                44              蓝色
35                45              紫红色
36                46              青蓝色
37                47              白色
]]

string(ASCII 27 Esc)

# Esc[0;31m
set(R "${Esc}[0;31m")   #红色
#Esc[0m 
set(E "${Esc}[m" )      #结束颜色设置
set(B "${Esc}[1;34m")   #蓝色高亮
set(RB "${Esc}[1;31;40m") #红色字体黑色背··景
message("${R}红色内容${E} 默认颜色")·
message("${B}蓝色内容${E} 默认颜色")
message("${RB}红色字体黑色背景${E} 默认颜色")

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HcqgOb1C-1672999555638)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/765db919-0ee0-4a13-a4a5-67c32d5d646f/Untitled.png)]

cmake 变量 set

设置变量

set(变量名,值)

使用变量

${变量} 可以直接用到字符串里

cmake 自带变量

add_library() 如果不进行设置的话

通过BUILD_SHARED_LIBS可以设置共享还是静态

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pqHZB26d-1672999555638)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/133d0206-ab13-417f-b63f-ee52800d5d9d/Untitled.png)]

${PROJECT_NAME}项目名称

cmake include

类似于c++ include 就是把代码直接复制过来相当于

比如有多个cmakelist,可以通过include把多个cmakelist引入到一个总的里面

#107cmake_include/CMakeLists.txt
cmake_minimum_required(VERSION 3.20)
project("cmake_include")
message("begin include")

include("cmake/test_cmake.cmake")
include("cmake/test_cmake.cmake")
include("cmake/test_cmake1.cmake" OPTIONAL) #OPTIONAL 可选,文件不存在不报错
include("cmake/test_cmake1.cmake" OPTIONAL  RESULT_VARIABLE ret) # RESULT_VARIABLE 返回值,是否引用成功
message("RESULT_VARIABLE ret= ${ret}") #NOTFOUND
include("cmake/test_cmake.cmake" OPTIONAL  RESULT_VARIABLE ret)
message("RESULT_VARIABLE ret= ${ret}") #导入文件的绝对路径

message("end include")

cmake 自动寻找所有源码文件和头文件

增加头文件和源文件后,不需要修改cmake

源码文件

会自动寻找.c .cpp 但不会寻找头文件

aux_source_directory("./src" src_main)
${src_main} 包含./src下所有的cpp c cc

头文件

file(glob h_file ./include/*.h)
${h_file} 包含./include 下所有的.h 头文件

整体

#108auto_src_h/CMakeLists.h
#[[
108auto_src_h
    CMakeLists.txt
    main.cpp
    src
        xlog.cpp
        xthread.cc
        xtest.c
    include
        xlog.h
        xthread.hpp
]]

cmake_minimum_required(VERSION 3.20)
project("auto_src_h")

#头文件加载路径
set(INCLUDE_PATH  "./include")
include_directories(${INCLUDE_PATH})

# 找到当前目录(.)下源码写入M_SRC变量中
aux_source_directory("." M_SRC)
aux_source_directory("./src" SRC)

#读取所有的头文件
file(GLOB H_FILE "${INCLUDE_PATH}/*.h*")

add_executable(${PROJECT_NAME} ${M_SRC} ${SRC} ${H_FILE})
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值