使用 cpack 和 cmake 安装特定的模式文件
install specific pattern files with cpack and cmake
假设我的项目中有下一个结构:
src_dir\a
src_dir\b\b2
src_dir\c\c2\c3
并且在每个文件夹中我都有几种类型的文件(.txt、.lib、.dll ....)
我只想安装X目录下的dll文件,所以我试了:
install(
DIRECTORY src_dir
DESTINATION X/
COMPONENT DLLS
FILES_MATCHING PATTERN "*.dll"
)
它确实工作正常,但它给了我原始结构的完整结构(我只想要 X 目录中的 dll 文件)。它的输出:
X/a/a.dll
X/b/b2/b.dll
X/c/c2/c3/c.dll
我希望它像这样 a.dll、b.dll 和 c.dll 将在 X 中(没有任何子文件夹)。
有没有办法在不提供项目中每个 dll 文件的完整路径的情况下做到这一点?
谢谢:)
您应该能够通过列出每个 目录 而不是每个 DLL 来获得您想要的行为。如果在 DIRECTORY 的末尾包含尾部正斜杠,则在复制到目标时将省略目录名称。我希望像下面这样的东西能达到你想要的效果:
install(
DIRECTORY src_dir/a/
DESTINATION X
COMPONENT DLLS
FILES_MATCHING PATTERN "*.dll"
)
install(
DIRECTORY src_dir/b/b2/
DESTINATION X
COMPONENT DLLS
FILES_MATCHING PATTERN "*.dll"
)
install(
DIRECTORY src_dir/c/c2/c3/
DESTINATION X
COMPONENT DLLS
FILES_MATCHING PATTERN "*.dll"
)
假设我的项目中有下一个结构:
src_dir\a
src_dir\b\b2
src_dir\c\c2\c3
并且在每个文件夹中我都有几种类型的文件(.txt、.lib、.dll ....) 我只想安装X目录下的dll文件,所以我试了:
install(
DIRECTORY src_dir
DESTINATION X/
COMPONENT DLLS
FILES_MATCHING PATTERN "*.dll"
)
它确实工作正常,但它给了我原始结构的完整结构(我只想要 X 目录中的 dll 文件)。它的输出:
X/a/a.dll
X/b/b2/b.dll
X/c/c2/c3/c.dll
我希望它像这样 a.dll、b.dll 和 c.dll 将在 X 中(没有任何子文件夹)。
有没有办法在不提供项目中每个 dll 文件的完整路径的情况下做到这一点?
谢谢:)
您应该能够通过列出每个 目录 而不是每个 DLL 来获得您想要的行为。如果在 DIRECTORY 的末尾包含尾部正斜杠,则在复制到目标时将省略目录名称。我希望像下面这样的东西能达到你想要的效果:
install(
DIRECTORY src_dir/a/
DESTINATION X
COMPONENT DLLS
FILES_MATCHING PATTERN "*.dll"
)
install(
DIRECTORY src_dir/b/b2/
DESTINATION X
COMPONENT DLLS
FILES_MATCHING PATTERN "*.dll"
)
install(
DIRECTORY src_dir/c/c2/c3/
DESTINATION X
COMPONENT DLLS
FILES_MATCHING PATTERN "*.dll"
)