regex - install() 与 FILES_MATCHING PATTERN 忽略模式并安装所有
问题描述
我目前install()
对 CMake 的功能有疑问v3.13.4
。我的代码如下:
install(
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
DESTINATION ${CMAKE_INSTALL_PREFIX}
FILES_MATCHING PATTERN "*.cfg"
)
我的理解是,CMake 会将与此模式匹配的所有文件复制到我给出的位置${CMAKE_INSTALL_PREFIX}
,但我当前目录中的所有子文件夹也会被复制。此外,如何将多个文件结尾模式复制到目标?简单地说*.cfg | *.xyz
或*.cfg || *.xyz
不起作用。
编辑:
还尝试将其替换为FILES_MATCHING PATTERN
:
FILES_MATCHING REGEX "[a-zA-Z0-9]*.ate|[a-zA-Z0-9]*.reserved"
它只会*.reserved
再次复制文件和所有文件夹。
解决方案
如果目录中的任何子文件夹也包含.cfg
文件,CMake 也会复制这些文件。您需要使用该EXCLUDE
指令明确告诉 CMake 忽略这些。此外,您可以连接多个PATTERN
指令以供 CMake 搜索和安装:
install(
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
DESTINATION ${CMAKE_INSTALL_PREFIX}
FILES_MATCHING
PATTERN "*.cfg"
PATTERN "*.xyz"
PATTERN "subFolderA" EXCLUDE
)
推荐阅读
- c++ - 使用 system() 函数在 C++ 程序中运行 cmd 命令
- ios - Xcode 10 - iOS 12 Simulator 位置模拟在 City Bicycle Ride/City Run/Freeway Drive 上失败
- c# - 带有 MVC 区域的 Umbraco - System.InvalidCastException:从 'System.String' 到 'System.Nullable'1 [[System.Guid 的无效转换
- excel - Excel VBA行中的第一个非空单元格
- excel - Excel VBA:初始化用户表单时搜索特定字符串的工作表
- groovy - 在 VSCode 中编译 Groovy
- apache-spark - 为什么 spark 中的累加器对工作任务是只写的?
- mysql - 多连接中的行总和
- python - python异步图像下载(多个网址)
- scala - 为什么scala复制不保留原始类实例的状态?