Подтвердить что ты не робот

Как выбрать, какой исполняемый объект CMake будет использоваться по умолчанию?

Я написал файл CMakeLists.txt, содержащий 2 исполняемых файла (target1 и target2):

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

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

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

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

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

Мне кажется, мне нужно установить этот default_target на target1.

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

4b9b3361

Ответ 1

Пример 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

Обратите внимание, что второй make ничего не восстанавливает.

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