【问题标题】:install specific pattern files with cpack and cmake使用 cpack 和 cmake 安装特定的模式文件
【发布时间】:2016-12-28 14:43:50
【问题描述】:

假设我的项目中有下一个结构:

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 文件的完整路径的情况下做到这一点?

谢谢:)

【问题讨论】:

    标签: cmake nsis cpack


    【解决方案1】:

    您应该能够通过列出每个目录(不一定是每个 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"
    )
    

    【讨论】:

    • 感谢您的回复,但我想避免复制代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 2022-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-03
    相关资源
    最近更新 更多