add_executable
Добавление исполняемого файла в проект с использованием указанных исходных файлов.
Обычные исполняемые файлы
add_executable(<name> [WIN32] [MACOSX_BUNDLE]
[EXCLUDE_FROM_ALL]
[source1] [source2 ...])
Добавляет целевой исполняемый файл, называемый <name>, который будет построен из исходных файлов, перечисленных в вызове команды. (Исходные файлы можно опустить, если они будут добавлены позже с помощью target_sources().) Имя целевого файла <name> соответствует логическому имени целевого файла и должно быть уникальным в рамках проекта. Фактическое имя создаваемого исполняемого файла строится на основе соглашений для данной платформы (например, <name>.exe или просто <name>).
По умолчанию исполняемый файл будет создан в каталоге дерева сборки, соответствующем каталогу дерева исходных файлов, в котором была выполнена команда. См. документацию по свойству целевого файла RUNTIME_OUTPUT_DIRECTORY, чтобы изменить это расположение. См. документацию по свойству целевого файла OUTPUT_NAME, чтобы изменить <name> часть окончательного имени файла.
Если WIN32 задано, свойство WIN32_EXECUTABLE будет установлено для создаваемой цели. См. документацию по этому свойству цели для получения подробностей.
Если MACOSX_BUNDLE задано, соответствующее свойство будет установлено для создаваемой цели. См. документацию по свойству целевого файла MACOSX_BUNDLE для получения подробностей.
Если EXCLUDE_FROM_ALL задано, соответствующее свойство будет установлено для создаваемой цели. См. документацию по свойству целевого файла EXCLUDE_FROM_ALL для получения подробностей.
Аргументы исходных файлов для add_executable могут использовать «генераторские выражения» с синтаксисом $<...>. См. руководство cmake-generator-expressions(7) для доступных выражений. См. руководство cmake-buildsystem(7) для получения дополнительной информации о определении свойств системы сборки.
См. также HEADER_FILE_ONLY о том, что делать, если некоторые исходные файлы предварительно обработаны, и вы хотите, чтобы исходные файлы были доступны в IDE.
Импортированные исполняемые файлы
add_executable(<name> IMPORTED [GLOBAL])
Целевая ссылка IMPORTED исполняемого файла ссылается на исполняемый файл, расположенный вне проекта. Правила для его сборки не генерируются, и свойство целевого файла IMPORTED имеет значение True. Имя целевого файла имеет область действия в каталоге, в котором он создан, и ниже, но опция GLOBAL расширяет область видимости. К нему можно обратиться, как и к любому построенному в проекте целевому файлу. IMPORTED исполняемые файлы полезны для удобной ссылки из команд, таких как add_custom_command(). Подробности импортированного исполняемого файла указываются путем задания свойств, имена которых начинаются с IMPORTED_. Самое важное такое свойство – IMPORTED_LOCATION (и его версия для каждой конфигурации IMPORTED_LOCATION_<CONFIG>), которая указывает расположение основного исполняемого файла на диске. См. документацию по свойствам IMPORTED_* для получения дополнительной информации.
Исполняемые файлы-псевдонимы
add_executable(<name> ALIAS <target>)
Создаёт целевой псевдоним, таким образом, <name> можно использовать для ссылки на <target> в последующих командах. <name> не появляется в сгенерированной системе сборки как цель make. <target> не должен быть ALIAS.
Псевдоним на не-GLOBAL импортированную цель имеет область действия в каталоге, в котором создан псевдоним, и ниже. Свойство целевого файла ALIAS_GLOBAL можно использовать для проверки, является ли псевдоним глобальным или нет.
ALIAS цели могут использоваться в качестве целей для чтения свойств, исполняемых файлов для пользовательских команд и пользовательских целей. Они также могут быть проверены на существование с помощью обычной подкоманды if(TARGET). <name> не может использоваться для изменения свойств <target>, то есть его нельзя использовать в качестве операнда для set_property(), set_target_properties(), target_link_libraries() и т.д. Цель-псевдоним не может быть установлена или экспортирована.
© 2000–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.18/command/add_executable.html