必须说的是这是我自己第一次写带有逻辑的CMake脚本,最后心血来潮决定写个笔记并且激动不已地发了动态。上班摸鱼的时候重写了一遍,并且发现了GLOB_RECURSE关键字。懊悔不已并且发现了相对路径的区别,只好开始研究如何写新的版本。期间因为自己其实并不熟悉正则表达式和CMake的字符串操作,想出了一个找到当前访问的文件...
2.1 从基础到高级:GLOB vs GLOB_RECURSE GLOB 的工作原理 GLOB_RECURSE 的深入探索 心理学角度看 GLOB 与 GLOB_RECURSE 2.2 其他重要的 file 子命令 文件读写操作 文件管理技巧 文件验证:哈希与安全性 3. CMake 与现代 C++ 3.1 C++11/14/17/20 特性与 CMake CMake 设置现代 C++ 标准 心理学角度看编程习...
GLOB_RECURSE: 递归地查找匹配指定模式的文件 SRC_LIST: 这是为匹配到的文件列表创建的变量名。可以使用 SRC_LIST 变量来引用所有找到的文件。 "src/*.cpp": 文件模式,指定要查找的文件。这个例子表示匹配 src 目录及其所有子目录下的所有 .cpp 文件。 使用这个命令的目的是自动找到并列出项目中的所有 C++ 源文...
f[3-5].txt - 匹配文件f3.txt,f4.txt,f5.txt。 GLOB_RECURSE选项将会生成一个类似于通常的GLOB选项的list,只是它会寻访所有那些匹配目录的子路径并同时匹配查询表达式的文件。作为符号链接的子路径只有在给定FOLLOW_SYMLINKS选项或者cmake策略CMP0009被设置为NEW时,才会被寻访到。参见cmake --help-policy CMP0009...
2、 file GLOB_RECURSE命令 3、file RENAME命令 4、RENAME_RECURES 5、file MAKE_DIRECTORY命令 6、file COPY命令 file COPY命令用于将文件copy到目标目录中,命令行格式如下: file(COPY <files> ... DESTINATION [FILE_PERMISSIONS <permissions> ...] [DIRECTORY...
GLOB_RECURSE选项将会生成一个类似于通常的GLOB选项的list,只是它会寻访所有那些匹配目录的子路径并同时匹配查询表达式的文件。作为符号链接的子路径只有在给定FOLLOW_SYMLINKS选项或者cmake策略CMP0009被设置为NEW时,才会被寻访到。参见cmake --help-policy CMP0009 查询跟多有用的信息。
GLOB_RECURSE:递归搜索指定目录,将搜索到的满足条件的文件名生成一个列表,并将其存储到变量中。 示例如下: 搜索当前目录的src目录下所有的源文件,并存储到变量中。 file(GLOB MAIN_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp) file(GLOB MAIN_HEAD ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h) ...
您可以使用列表过滤来删除GLOB_RECURSE:
使用的语法都比较类似,以递归遍历文件为例,下面是获取 src 目录下两个子目录内所有 c 文件的列表的示例:file (GLOB_RECURSE ALL_SRC src/module1/.c src/module2/.c )。GLOB_RECURSE 表示执行递归查找,查找目录下所有符合指定正则表达式的文件。 分隔符...
默认GLOB_RECURSE省略结果列表中的目录,设置LIST_DIRECTORIES为 true 来添加目录到结果列表中。如果FOLLOW_SYMLINKS被指定或规则 CMP0009 没有设置为 OLD 。LIST_DIRECTORIES将符号链接作为路径。 递归文件名包括的例子如下: /dir/*.py - 匹配所有python文件,在/dir 目录及其子目录中 ...