有没有办法让自定义目标依赖于 CPack? [复制]

Posted

技术标签:

【中文标题】有没有办法让自定义目标依赖于 CPack? [复制]【英文标题】:Is there a way to have a custom target depend on CPack? [duplicate] 【发布时间】:2017-01-27 11:48:23 【问题描述】:

假设我使用 CPack:

包括(CPack)

这应该会增加两个额外的目标:packagepackage_source,但是如果我想创建一个依赖于它的 post-package 目标,如下所示:

add_custom_target(do_something_to_package ...)
add_dependencies(do_something_to_package package)

构建时出现错误,如下所示:

make[2]: *** No rule to make target `CMakeFiles/package.dir/all', needed by `CMakeFiles/do_something_to_package.dir/all'.  Stop.

有没有办法让它工作?

【问题讨论】:

好像有a bug report for this。 【参考方案1】:

啊,是的,跟随How to add_custom_target that depends on "make install" question,这似乎有效:

add_custom_target(package_target
    COMMAND "$CMAKE_COMMAND" --build . --target package
    WORKING_DIRECTORY "$CMAKE_CURRENT_BINARY_DIR"
    COMMENT "Building package"
    DEPENDS stuff_required_for_package
    VERBATIM
)

不完全优雅,但可能会更糟!此外,它似乎并不能很好地与并行构建一起使用。不完全确定为什么,但为了安全起见,我会做一个非并行构建。

【讨论】:

以上是关于有没有办法让自定义目标依赖于 CPack? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

CPack 尝试构建所有目标

有没有办法让自定义类在UIView上进行操作而不需要在初始化时传递ViewController(作为参考)?

CPack 子项目和公共标头

重命名 cpack 自动目标

如何跳过对包目标的所有依赖?

复制文件并将它们包含在 CPack 存档中