本文共 1654 字,大约阅读时间需要 5 分钟。
# 获取该命令所在文件的目录
法一:
get_filename_component(FILE_PATH "${CMAKE_CURRENT_LIST_FILE}" PATH)
法二:
PROJECT_SOURCE_DIR:CMakeLists.txt所在的目录。
PROJECT_BINARY_DIR: 运行cmake时,当前所在的目录。
#通配符
file(GLOB LIBS "${BOOST_PATH}/libboost*.a")
#获取源代码文件
aux_source_directory 查找在某个路径下的所有源文件。
例如:
# 查找当前目录下的所有源文件
# 并将名称保存到 DIR_SRCS 变量 aux_source_directory(. DIR_SRCS)
#将CMakeLists中变量值 ,赋值给源码宏定义 (#文件替换)
例如
step1
CMakeLists.txt中,定义
set (Demo_VERSION_MAJOR 1)
# 加入一个配置头文件,用于处理 CMake 对源码的设置
configure_file ( "${PROJECT_SOURCE_DIR}/config.h.in" "${PROJECT_BINARY_DIR}/config.h" )在${PROJECT_SOURCE_DIR}/config.h.in 中,增加
#define Demo_VERSION_MAJOR @Demo_VERSION_MAJOR@
step2:
运行cmake 命令后,
{PROJECT_BINARY_DIR}/config.h中出现
#define Demo_VERSION_MAJOR 1
---
configure_file(<input> <output> [COPYONLY] [ESCAPE_QUOTES] [@ONLY])
对指定的输入文件中的内容按照指定的规则进行替换,替换完成后输出到output指定的输出路径例如:
configure_file (
"${PROJECT_SOURCE_DIR}/config.h.in" "${PROJECT_BINARY_DIR}/config.h" ) 将config.h.in 转换成config.h
其中的转换规则是:
config.h.in中:
#cmakedefine VAR的定义语句将会被替换为#define VAR或者/* #undef VAR */。
例如,#cmakedefine USE_MYMATH
设定为ON,或设置成其他非空任意值时,在config.h变成了 #define USE_MYMATH,
设定为OFF,或设置为空值,或不做任何设置时,在config.h变成了 / *#undef USE_MYMATH */;
同理,#cmakedefine01 VAR
设定为ON,或设置成其他非空任意值时,在config.h变成了 #define VAR 1
设定为OFF,或设置为空值,或不做任何设置时, 在config.h变成了 #define VAR 0
#option命令 (用于命令行输入cmake命令-D选项)
option("描述选项的帮助性文字" [initial value])
示例:
CMakeLists.txt中,option (USE_MYMATH "Use provided math implementation" ON)
控制台执行:cmake .
生成的config.h中,#define USE_MYMATH 1
控制台执行:cmake . -DUSE_MYMATH=adg (非空,任意值。除OFF,off外)
生成的config.h中,#define USE_MYMATH 1
控制台执行:cmake . -DUSE_MYMATH=OFF (或off)
生成的config.h中,#define USE_MYMATH 0
转载地址:https://chilaidashi.blog.csdn.net/article/details/107234811 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!