Wie erstelle ich nur eine Objektdatei (* .o) von einem CMake-Build-Ziel?

9

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!

    
Nick 22.01.2011, 00:18
quelle

2 Antworten

4

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:

%Vor%

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.

    
watashi16 28.03.2011 16:22
quelle
1

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.

    
RobertJMaynard 22.01.2011 14:17
quelle

Tags und Links