install() with FILES_MATCHING PATTERN 忽略模式并安装所有

HFi*_*nch 4 regex installation cmake

我目前在使用install()CMake的功能时遇到问题v3.13.4。我的代码如下:

install(
    DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
    DESTINATION ${CMAKE_INSTALL_PREFIX}
    FILES_MATCHING PATTERN "*.cfg"
)
Run Code Online (Sandbox Code Playgroud)

我的理解是,CMake 会将与此模式匹配的所有文件复制到我给定的位置${CMAKE_INSTALL_PREFIX},但我当前目录中的所有子文件夹也会被复制。另外,如何将多个文件结束模式复制到目的地?简单地说*.cfg | *.xyz*.cfg || *.xyz不起作用。

编辑:

还尝试将其替换为FILES_MATCHING PATTERN

FILES_MATCHING REGEX "[a-zA-Z0-9]*.ate|[a-zA-Z0-9]*.reserved"
Run Code Online (Sandbox Code Playgroud)

它只*.reserved再次复制文件和所有文件夹。

squ*_*les 6

如果目录中的任何子文件夹也包含.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
)
Run Code Online (Sandbox Code Playgroud)