add_executable
Добавить исполняемый файл в проект, используя указанные исходные файлы.
Обычные исполняемые файлы
add_executable(<name> [WIN32] [MACOSX_BUNDLE]
[EXCLUDE_FROM_ALL]
[source1] [source2 ...])
Добавляет целевой исполняемый файл, названный <name>, который будет скомпилирован из исходных файлов, перечисленных в вызове команды. <name> соответствует логическому имени целевого файла и должно быть уникальным в рамках проекта. Фактическое имя скомпилированного исполняемого файла строится на основе конвенций целевой платформы (например, <name>.exe или просто <name>).
Введено в версии 3.1: Аргументы исходных файлов для add_executable могут использовать "генераторские выражения" со синтаксисом $<...>. См. руководство cmake-generator-expressions(7) для доступных выражений.
Введено в версии 3.11: Исходные файлы могут быть опущены, если они будут добавлены позже с помощью target_sources().
По умолчанию исполняемый файл будет создан в каталоге сборки, соответствующем каталогу исходных файлов, в котором была выполнена команда. См. документацию свойства целевого файла RUNTIME_OUTPUT_DIRECTORY для изменения этого расположения. См. документацию свойства целевого файла OUTPUT_NAME для изменения части имени конечного файла <name>.
Если WIN32 задано, свойство WIN32_EXECUTABLE будет установлено для созданного целевого файла. См. документацию этого свойства целевого файла для получения подробной информации.
Если MACOSX_BUNDLE задано, соответствующее свойство будет установлено для созданного целевого файла. См. документацию свойства целевого файла MACOSX_BUNDLE для получения подробной информации.
Если EXCLUDE_FROM_ALL задано, соответствующее свойство будет установлено для созданного целевого файла. См. документацию свойства целевого файла EXCLUDE_FROM_ALL для получения подробной информации.
См. руководство cmake-buildsystem(7) для получения дополнительной информации о задании свойств системы сборки.
См. также HEADER_FILE_ONLY о том, что делать, если некоторые исходные файлы предварительно обрабатываются, и вам нужно сделать доступными исходные файлы в IDE.
Импортированные исполняемые файлы
add_executable(<name> IMPORTED [GLOBAL])
Импортированный целевой исполняемый файл ссылается на исполняемый файл, расположенный за пределами проекта. Правила для его сборки не генерируются, и свойство целевого файла 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.
Введено в версии 3.11: Псевдоним может ссылаться на импортированный целевой файл.
Введено в версии 3.18: Псевдоним может ссылаться на не-GLOBAL импортированный целевой файл. Такой псевдоним имеет область действия в каталоге, в котором он создан, и его подкаталогах. Свойство целевого файла ALIAS_GLOBAL может использоваться для проверки является ли псевдоним глобальным.
ALIAS целевые файлы могут использоваться как целевые файлы для чтения свойств, исполняемые файлы для пользовательских команд и пользовательских целевых файлов. Они также могут быть проверены на существование с помощью обычной команды if(TARGET). <name> нельзя использовать для изменения свойств <target>, то есть его нельзя использовать в качестве операнда set_property(), set_target_properties(), target_link_libraries() и т.д. ALIAS целевые файлы не могут быть установлены или экспортированы.
© 2000–2021 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.20/command/add_executable.html