我想强制执行兄弟依赖关系的执行顺序。假设我们有以下的顶层目标:CMake:在兄弟目标依赖关系之间执行执行顺序
add_custom_target(test_all)
add_custom_target(test_coverage)
add_custom_target(test_coverage_zero)
add_custom_target(test_coverage_collect)
我使用test_all
执行单元测试(以及可能建立他们和他们的依赖)。 test_coverage
应该执行test_coverage_zero
,然后test_all
,最后是test_coverage_collect
。 test_coverage_zero
将清除之前运行的test_all
的剩余覆盖率数据,而test_coverage_collect
使用当前覆盖率数据并生成某种人类可读的输出。此设置的原因是允许test_all
在没有实际覆盖数据处理的情况下执行。另一方面,test_coverage
需要执行test_all
来产生覆盖数据。
[详细内容:我使用的覆盖数据gcov
/lcov
并添加自定义命令test_coverage_zero
和test_coverage_collect
的实际处理]
我设置了以下的依赖,实现此行为:
add_dependencies(test_coverage test_coverage_zero test_all test_coverage_collect)
这是行不通的。实际执行顺序为test_all
,test_coverage_zero
和test_coverage_collect
,这将在收集步骤之前删除覆盖率数据。
我的问题:我如何在CMake中强制执行目标依赖项(在兄弟级别)?
在兄弟之间添加其他依赖关系吗? – usr1234567
@ usr1234567:试过了,似乎没有任何效果 – regnirpsj
您能否为实际目标提供实际的“命令”部分?从看看它,我认为如果你使用['add_custom_command()'](https://cmake.org/cmake/help/v3.3/command),你不需要'test_coverage_zero'和'test_coverage_collect'目标/add_custom_command.html)调用并输出正确的'OUTPUT'和'DEPENDS'文件。 – Florian