Ich möchte die Ausführungsreihenfolge von Geschwisterabhängigkeiten erzwingen. Nehmen wir an, wir die folgenden Top-Level-Ziele haben:CMake: Ausführungsreihenfolge zwischen Geschwisterzielabhängigkeiten erzwingen
add_custom_target(test_all)
add_custom_target(test_coverage)
add_custom_target(test_coverage_zero)
add_custom_target(test_coverage_collect)
I test_all
bin mit Unit-Tests ausführen (und möglicherweise bauen sie und ihre Abhängigkeiten). test_coverage
sollte test_coverage_zero
, dann test_all
und schließlich test_coverage_collect
ausführen. test_coverage_zero
wird verbleibende Überdeckungsdaten von einem vorherigen Lauf von test_all
bereinigen, während test_coverage_collect
die aktuellen Überdeckungsdaten verwendet und eine Art menschenlesbare Ausgabe erzeugt. Der Grund für dieses Setup ist, dass test_all
ohne tatsächliche Coverage-Datenverarbeitung ausgeführt werden darf. Auf der anderen Seite muss test_coverage
test_all
ausführen, um Coverage-Daten zu erzeugen.
[Detail. Ich bin gcov
/lcov
für die Berichterstattung Daten und hinzugefügt benutzerdefinierte Befehle zu test_coverage_zero
und test_coverage_collect
für die eigentliche Verarbeitung]
Ich habe die folgenden Abhängigkeiten Setup dieses Verhalten zu erreichen:
add_dependencies(test_coverage test_coverage_zero test_all test_coverage_collect)
, das nicht funktioniert. Die tatsächliche Ausführungsreihenfolge lautet test_all
, test_coverage_zero
und test_coverage_collect
, wodurch die Überdeckungsdaten vor dem Erfassungsschritt entfernt werden.
Meine Frage: Wie erzwinge ich die Reihenfolge der Zielabhängigkeiten (auf der Ebene der Geschwister) in CMake?
Zusätzliche Abhängigkeiten zwischen den Geschwistern hinzufügen? – usr1234567
@ usr1234567: ausprobiert, scheint nicht zu funktionieren – regnirpsj
Können Sie bitte die tatsächlichen 'COMMAND' Teile für Ihre Ziele geben? Ich glaube nicht, dass Sie die Ziele "test_coverage_zero" und "test_coverage_collect" brauchen, wenn Sie mit ['add_custom_command()'] arbeiten (https://cmake.org/cmake/help/v3.3/command) /add_custom_command.html) ruft auf und gibt die korrekten 'OUTPUT'- und' DEPENDS' -Dateien. – Florian