我目前在使用 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
)