我想強制執行兄弟依賴關係的執行順序。假設我們有以下的頂層目標: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