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
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} 默认颜色")
cmake 变量 set
设置变量
set(变量名,值)
使用变量
${变量} 可以直接用到字符串里
cmake 自带变量
add_library() 如果不进行设置的话
通过BUILD_SHARED_LIBS可以设置共享还是静态
${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})