2012-04-20 7 views
12

Ich habe eine CMakeLists.txt Datei mit 2 ausführbaren Dateien geschrieben (target1 und target2):Wie wählen Sie, welches CMake ausführbare Ziel das Standardziel ist?

ADD_EXECUTABLE(target1 ${CXX_FILES}) 
TARGET_LINK_LIBRARIES(target1 ${requiredlibs}) 

ADD_EXECUTABLE(target2 ${CXX_FILES} ${OTHER_CXX_FILES}) 
TARGET_LINK_LIBRARIES(target2 ${requiredlibs}) 

jedes Mal, wenn ich machen laufen nun ohne Parameter beide Ziele neu erstellt werden. Aber ich möchte target1 als Standard-ausführbare Datei definieren, so dass das Ausführen von make ohne Parameter nur Builds target1 erstellt. Für Gebäude target2 würde ich make target2 laufen lassen.

Ist das möglich?

Im Makefile von CMake erstellt gibt es die folgende Definition: default_target: alle

Ich glaube, ich brauche eine Möglichkeit, diesen default_target-target1 einzustellen.

Ein anderes Problem, das ich habe ist, dass make immer die Ziele neu erstellt, auch wenn keine Quelldatei geändert wurde.

Antwort

11

Ein Beispiel CMakeLists.txt das tut, was Sie beantragt:

ADD_EXECUTABLE(target1 a.c) 

ADD_EXECUTABLE(target2 EXCLUDE_FROM_ALL b.c) 

Für mich ist es das Ziel nicht neu erstellen, wenn die Quelldateien werden nicht verändert (oder Änderungszeit nicht ändern). Ausgabe bekomme ich:

$ make -f Makefile 
Scanning dependencies of target target1 
[100%] Building C object CMakeFiles/target1.dir/a.c.o 
Linking C executable target1 
[100%] Built target target1 
[$ make -f Makefile 
[100%] Built target target1 

Beachten Sie, dass die zweite Marke nichts wieder herstellt.

+0

Vielen Dank für Ihre schnelle Antwort und für Ihr Beispiel (Sie könnten die CMake manual für diese Art von Informationen lesen). EXCLUDE_FROM_ALL hat mein Problem gelöst. – user1346791

Verwandte Themen