【问题标题】:CMake depend on "all" target from custom targetCMake 依赖于自定义目标中的“全部”目标
【发布时间】:2015-03-01 03:52:40
【问题描述】:

我正在制作一个需要以奇特方式打包的库,作为其中的一部分,我有一个包含以下行的脚本:

#only install the lib component, nd put in the a special directory
ADD_CUSTOM_TARGET(o_destdir_install
  COMMAND DESTDIR=${CMAKE_BINARY_DIR}/o_package ${CMAKE_COMMAND} -DCOMPONENT=lib -P cmake_install.cmake
  DEPENDS ${CMAKE_BINARY_DIR}/cmake_install.cmake
  COMMENT "Building o_package directory with DESTDIR"
  )
ADD_DEPENDENCIES(o_destdir_install all preinstall)

我从旧的 UseDebian.cmake dpkg 构建器中找到了这段代码,但是它不会在运行安装之前全部构建和预安装。让我的目标依赖于非内置目标似乎可行,但我不能依赖它似乎的任何内置目标。我怎样才能让它工作?

如果我可以依赖单个组件安装,最好不用 cmake 的黑客调用,那就太好了,但无论如何我都很好

【问题讨论】:

    标签: dependencies cmake


    【解决方案1】:

    您应该使用install(CODE) 表单搭载现有的安装目标,而不是将您自己的安装目标拼凑在一起:

    install(CODE "execute_process(COMMAND DESTDIR=${CMAKE_BINARY_DIR}/o_package ${CMAKE_COMMAND} -DCOMPONENT=lib -P cmake_install.cmake")
    

    【讨论】:

      【解决方案2】:

      您可以使用 ALL 关键字依赖“所有”目标。见documentation

      【讨论】:

      • 我认为它使 ALL 依赖于自定义目标,而不是相反。
      • 可能。我不是以英语为母语的人,所以“除外/期望”和“依赖”给我带来了困难。
      猜你喜欢
      • 2020-10-28
      • 2011-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多