Ich bin neu zu cmake und ich möchte das folgende Verhalten erreichen. Ich habe ein Unterverzeichnis programs
mit mehreren unabhängigen Programmen. Für jedes Programm möchte ich verschiedene Ziele hinzufügen (z. B. analysieren oder testen), die mit einem Präfix benannt sind. Dies sollte mir erlauben, sie wie make prog1-analyze
oder make prog2-test
auszuführen.Mehrere Ziele für jede Anwendung
Darüber hinaus möchte ich auch alle Ziele des gleichen Typs (z. B. das test
Ziel) auf einmal (z. B. über make test
) ausführen.
Um dies zu tun, habe ich die folgende Verzeichnisstruktur mit zwei CMakeLists.txt
Dateien.
CMakeLists.txt
programs
|-- prog1.c
|-- prog2.c
|-- CMakeLists.txt
Die Top-Level-Datei enthält eine Makrodefinition add_application
, während die programs/CMakeLists.txt
für jedes Programm dieses Makro aufruft. Aber wie schreibe ich das Makro so, dass ich mehrere Ziele und ein globales Ziel für alle Ziele des gleichen Typs habe?
macro(add_application NAME SOURCE_FILES)
endmacro()
Nicht ganz die Antwort, die Sie suchen, aber Sie sollten * wirklich * den Befehl 'add_test()' und 'ctest' betrachten. Aus architektonischer Sicht sollten Sie keine ausführbaren Dateien testen. Diese 'prog1.c' und' prog2.c' sollten dünne Wrapper für Funktionen sein, die in einer Bibliothek implementiert sind. (Befehlszeilenoptionen analysieren, erforderliche Parameter einrichten, Bibliotheksfunktion aufrufen.) Bibliotheksfunktionen können einfach mit einer dedizierten * test * -Dexe getestet werden. (Was, du hast es erraten, du würdest mit 'add_test()' hinzufügen und kannst 'ctest' durchlaufen.) – DevSolar