CMake
文章平均质量分 63
CMake 编译工具
exuan00
这个作者很懒,什么都没留下…
展开
-
【CMake 安装】Linux 升级 CMake:从源代码安装 CMake 3.21
目前 cmake-3.5.1 不支持 C++17,所以想升级。但是执行 apt install --only-upgrade cmake 说已经是最新版本。那么只能从 cmake 源代码编译。1. 登录到 https://cmake.org/download/2. 下载 cmake-3.21.0-rc2.tar.gzwget https://github.com/Kitware/CMake/releases/download/v3.21.0-rc2/cmake-3.21.0-rc2.tar.g原创 2021-07-02 15:55:01 · 3597 阅读 · 0 评论 -
【CMake 语法】(1) CMake 编码
CMake 编码格式用 ASCII,以便实现所有平台上最大的可移植性。换行符可以编码为 ‘\n’, ‘\r\n’。CMake 编码也可以使用 UTF-8。gb2312 编码 在 Linux 乱码?用 UTF-8 编码Windows 控制台 UTF-8 乱码?chcp 65001...原创 2021-07-06 14:34:27 · 2348 阅读 · 0 评论 -
【CMake 语法】(2) CMake 输出信息
1. message 函数我们使用 message 函数,输出消息message([模式] “message text” …)模式可以为: FATAL_ERROR, SEND_ERROR, WARNING, AUTHOR_WARNING, DEPRECATION, NOTICE, STATUS, VERBOSE, DEBUG, TRACE可以定义不同级别的消息(无) = ‘重要’ 消息;STATUS = ‘非重要’ 消息;–>‘常用’WARNING = ‘警告’ 消息, 会继续执行;A原创 2021-07-01 22:45:34 · 4498 阅读 · 0 评论 -
【CMake 语法】(3) CMake 注释
CMake 使用 # 进行行注释,使用 #[[ 形式进行块注释。1. 行注释CMake 使用 # 进行行注释,可以放在任何位置。例如# This is a line comment.message("First Argument\n" # This is a line comment :) "Second Argument") # This is a line comment.2. 块注释CMake 使用 #[[ 形式进行块注释。例如#[[This is a bracke原创 2021-07-06 14:41:13 · 3725 阅读 · 0 评论 -
【CMake 语法】(4) CMake 命令、命令参数、转义序列
1. 命令CMake 源码文件基本上由命令组成。2. 命令参数命令调用中由三种类型的参数:括号参数带引号的参数不带引号的参数括号参数括号参数内容,是左括号 [ 跟零个或多个 = 以右括号 ] 结束。括号参数,不执行 转义序列 或 变量引用。例如:message([=[This is the first line in a bracket argument with bracket length 1.No \-escape sequences or ${variable} r原创 2021-07-06 14:42:17 · 1809 阅读 · 0 评论 -
【CMake 语法】(5) CMake 变量、环境变量、持久缓存
我们使用 set 函数 设置变量,使用 unset 函数 取消变量,使用 ${} 获取变量值常规变量# 设置常规变量set(<variable> <value> ...)# 取消常规变量unset(<variable>)# 获取常规变量${<variable>}使用常规变量set(PATH "/tmp" "/bin" "/lib")message("${PATH}")取消常规变量,我们可以使用 unset(PATH),也可以使用原创 2021-07-01 23:37:00 · 4314 阅读 · 0 评论 -
【CMake 语法】(6) CMake 条件、循环、跳出循环
1. 条件条件: if, elseif, else, endifCMake 条件编译https://www.cnblogs.com/binbinjx/p/5648957.htmlCMake 条件编译: 平台检测https://gitlab.kitware.com/cmake/community/-/wikis/doc/tutorials/How-To-Write-Platform-Checksif (WIN32)#do somethingelseif (UNIX)#do something原创 2021-07-06 14:48:56 · 1557 阅读 · 0 评论 -
【CMake 语法】(7) CMake 列表操作
SET(Open_BLAS_LIB_SEARCH_PATHS /lib/ /lib/openblas-base /lib64/ /usr/lib /usr/lib/openblas-base /usr/lib64 /usr/local/lib /usr/local/lib64 /opt/OpenBLAS/lib $ENV{OpenBLAS}cd原创 2021-07-02 13:04:34 · 3086 阅读 · 0 评论 -
【CMake 语法】(8) CMake 字符串操作
stringstring(REGEX REPLACE “.+[ \t]${name}[ \t]+([0-9]+)." “\1” name"{name} "name"{KaTeX parse error: Expected 'EOF', got '}' at position 11: {FILE_VAR}}̲")string(REGEX…{VARNAME}[ \t]+"([0-9]+).$” “\1” LIBNAMEVERSIONMAJOR"{LIBNAME}_VERSION_MAJOR "LIBNAME原创 2021-07-06 14:51:52 · 12899 阅读 · 0 评论 -
【CMake 语法】(9) CMake 路径操作
get_filename_component(folder ${lib} PATH)get_filename_component(filename ${lib} NAME)列表转换为绝对路径CMakeLists.txtcmake_minimum_required(VERSION 3.9.0)project(list)set(FILENAME_V CMakeLists.txt)message("FILENAME_V: ${FILENAME_V}")get_filename_compon原创 2021-07-06 14:52:41 · 4975 阅读 · 0 评论 -
【CMake 语法】(10) CMake 文件操作
filehttps://www.bbsmax.com/A/amd0aMj1zg/读取文件,并且匹配正则表达式main.txt#include <iostream>#if defined(WIN32) #if defined(CPP14) #include <experimental/filesystem> namespace fs = std::experimental::filesystem; #elif defined(CPP17) #include原创 2021-07-06 14:53:21 · 1757 阅读 · 0 评论 -
【CMake 语法】(11) CMake 数学操作
mathhttps://cmake.org/cmake/help/v3.19/command/math.htmlmath(EXPR __index “${__i}- 1”)原创 2021-07-06 14:54:12 · 878 阅读 · 0 评论 -
【CMake 语法】(13) CMake 命令行参数
separate_arguments命令行参数去重CMakeLists.txtcmake_minimum_required(VERSION 3.9.0)project(list)set(STRING_V "1 2 3 4 2 4 6 7 8")message("STRING_V: ${STRING_V}")if(STRING_V) separate_arguments(STRING_V) message("STRING_V: ${STRING_V}") list(REMOVE原创 2021-07-06 14:55:35 · 2407 阅读 · 0 评论 -
【CMake 项目】CMake 选项开关
在执行 CMakeLists.txt 脚本时,我们如何根据不同的选项,执行不同的命令。我们可以在使用 cmake 工具时,添加 -D 选项,可以传输选项变量。-D 选项语法如下:-D <var>[:<type>]=<value>可以忽略 <type> 类型,-D 选项中,-D 与 <var> 变量之间,可以有空格,但是 <var> 变量之后必须有 = 等号。以选项变量 TEST_DEBUG 为例:# 下面形式是相同的cma原创 2021-07-02 13:18:32 · 3254 阅读 · 0 评论 -
【CMake 项目】CMake 版本兼容:最低版本需求和策略
https://cmake.org/cmake/help/v3.19/manual/cmake-policies.7.htmlhttps://blog.csdn.net/wzj_110/article/details/115985350https://blog.csdn.net/lixiang19910909/article/details/78231028cmake_policyCMAKE_POLICY_DEFAULT_CMPCMAKE_POLICY_WARNING_CMP原创 2021-07-02 01:46:06 · 11204 阅读 · 1 评论 -
【CMake 语法】(12) CMake 宏和函数
函数: function, endfunction宏: macro, endmacro函数返回: return${ARGN} 获取所有的参数cmake_parse_arguments: 解析函数或宏的参数https://cmake.org/cmake/help/v3.19/command/cmake_parse_arguments.html函数范围内的变量新变量只在函数的范围内,我们仅在函数内使用 set() 和 unset() 命令处理该变量,并且对当前函数和其中的任何嵌套调用可见,但在函数原创 2021-07-06 14:54:47 · 2669 阅读 · 1 评论 -
【CMake 项目】CMake 项目、目标、子目录
1. CMake 版本 与 路径CMAKE_BINARY_DIR 为 cmake 命令执行路径, CMAKE_SOURCE_DIR 为 CMakeLists.txt 主文件路径,这两个变量与子目录中的 CMakeLists.txt 文件无关。CMAKE_VERSION 为 CMake 的版本,由 MAJOR.MINOR.PATCH.TWEAK 组成。CMAKE_MAJOR_VERSION 为 主要版本, CMAKE_MINOR_VERSION 为 次要版本, CMAKE_PATCH_VERSION 为原创 2021-07-02 00:29:05 · 6609 阅读 · 2 评论