菜鸟笔记
提升您的技术认知

regex - install() with 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
)