2012-04-20 2 views
12

Я написал CMakeLists.txt файл, включая 2 исполняемые файлы (target1 и target2):Как выбрать, какой исполняемый объект CMake будет использоваться по умолчанию?

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

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

Теперь каждый раз, когда я бег сделать без каких-либо параметров обе мишени перестроены. Но я хочу определить target1 как исполняемый файл по умолчанию, так что запуск make без каких-либо параметров создает только target1. Для строительства target2 Я бы выбрал make target2.

Возможно ли это?

В Makefile, созданный CMake есть следующее определение: default_target: все

Я думаю, что мне нужен способ, чтобы установить это default_target в target1.

Еще одна проблема, с которой я сталкиваюсь, заключается в том, что make всегда восстанавливает цели, даже если исходный файл не был изменен.

ответ

11

Пример CMakeLists.txt, который делает то, что вы просили:

ADD_EXECUTABLE(target1 a.c) 

ADD_EXECUTABLE(target2 EXCLUDE_FROM_ALL b.c) 

Для меня это не перестраивать цель, если исходные файлы не изменяются (или время изменения не изменились). Выходные данные:

$ 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 

Обратите внимание, что вторая марка не перестраивает ничего.

(вы можете прочитать CMake manual для данного типа информации)

+0

Спасибо за ваш быстрый ответ и на ваш пример. EXCLUDE_FROM_ALL решила мою проблему. – user1346791

Смежные вопросы