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)]](https://img-blog.csdnimg.cn/e9707c2affcd4394984cc7858159abef.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)]](https://img-blog.csdnimg.cn/a1753d4c9fcf416180675b1a7bc5fcd6.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)]](https://img-blog.csdnimg.cn/cf80f89a05ef4f0f8acad431ff44839f.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})



















