Как выбрать, какой исполняемый объект 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 всегда восстанавливает цели, даже если исходный файл не был изменен.
Ответы
Ответ 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 для этого типа информации)