【问题标题】:How to add dependency one executable from other executable?如何从其他可执行文件中添加一个可执行文件的依赖项?
【发布时间】:2020-10-22 05:26:30
【问题描述】:

库和库+可执行文件之间的依赖关系可以通过 target_link_libraries 进行管理。因此,如果某些库构建失败 - 所有依赖目标都不会构建。

我还有另一个任务:存在库目标、可执行测试目标(为库提供测试)和具有主要逻辑的主要可执行目标。

我需要只有在可执行测试目标的构建没有失败时才应该构建主可执行目标。

换句话说,我需要在两个可执行文件之间建立依赖关系。

我怎样才能实现它?有人可以举个例子吗?

【问题讨论】:

  • add_dependencies 命令有什么问题?
  • @Tsyvarev,好的,谢谢。我认为没有前缀“target_”的任何命令都已过时,并且存在现代方式。
  • “现代”CMake 更喜欢 面向目标 命令而不是“全局”命令。命令add_dependencies 完全面向目标,即使没有target_ 前缀。

标签: cmake


【解决方案1】:

测试是 CMake/Ctest/CPack 套件中的不同阶段,因此您不太可能找到根据测试结果有条件地编译/链接可执行文件的方法。

您可以使用add_dependencies 确保测试可执行文件首先构建,但这与仅生成测试的构建产品成功运行不同。

我建议先运行您的构建,然后再进行测试。根据测试的返回码,您可以选择是否打包最终产品。

【讨论】:

  • 我是否正确理解我需要 add_custom_target 来启动该目标的测试和 add_dependencies?
  • 我会在CMakeFile.txt 之外解决这个问题。执行完整的构建。运行 make test 或调用 CTest,如果测试运行成功则运行 make package
  • 您需要使用add_test 定义您的测试并在您的CMake 文件中的某处调用enqble_testing(),然后运行make test
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-18
  • 1970-01-01
  • 2014-10-06
  • 2017-11-22
  • 2012-05-11
  • 1970-01-01
  • 2021-05-24
相关资源
最近更新 更多