Ich versuche eine Objektdatei mit CMake zu erstellen, aber ich kann CMake nicht dazu bringen, etwas anderes als eine vollständige ausführbare Datei zu erstellen. Ich suche im Grunde nach dem Ergebnis der folgenden Kompilierung (das Ergebnis wird auf ein VxWorks Ziel geladen und dann verknüpft):
%Vor%Ich habe versucht, die Eigenschaft OUTPUT_NAME des Ziels zu ändern, aber das scheint auch nicht zu helfen.
Ich denke, ich könnte das umgehen, indem ich einen benutzerdefinierten Befehl verwende, aber das scheint so zu sein, dass ich auch an den netten Dingen arbeite, die CMake bietet.
Danke für Ihre Hilfe!
Diese Antwort wurde mir in der CMake Mailingliste gegeben und es hat funktioniert ein Charme:
Sehen Sie sich das folgende Skript ${CMAKE_SOURCE_DIR}/cpo
an:
Sehen Sie sich nun die folgende CMakeLists.txt an:
%Vor% Das Startskript "cpo" bewirkt, dass das Ziel "f" Objektdateien erzeugt
das Verzeichnis, das anstelle einer Bibliothek als erster Parameter übergeben wurde;
Alles andere sollte wie gewohnt funktionieren. Der Schlüssel ist das Skript
Zugriff auf den Platzhalter <OBJECTS>
, damit das Objekt bearbeitet werden kann
Dateien, während der eigentliche Link-Befehl nach dem "-" ignoriert wird. Das
So können Sie alle CMake-Funktionen für die Kompilierung und
abfangen, bevor die Verknüpfung stattfindet. IMO, das ist ziemlich sauber
Lösung, die sich leicht an Ihre Bedürfnisse anpassen lässt; der Nachteil
ist, dass die Verwendung von RULE_LAUNCH_LINK
auf Makefile
Generatoren beschränkt ist.
Ich würde den benutzerdefinierten Befehlspfad gehen. Denken Sie daran, dass Sie diese Objektdateien für die Kompilierung mit CMake später verwenden können, wenn Sie die GENERATE- und EXTERNAL_OBJECT-Quelldateieigenschaften festlegen.
Tags und Links build-process cmake