Додає бінарний виконуваний файл до проекту використовуючи певні файли вихідного джерельного коду.

Звичайні виконувані файли

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 розширює її видимість. До неї можна звертатись як до будь-якої іншої цілі у проекті. Імпортовані виконувані файли є корисними для зручного використання з команд на подобі add_custom_command(). Деталі про імпортований виконуваний файл вказуються за допомогою встановлених властивостей імена яких починаються з префіксу IMPORTED_. Найбільш важливою такою властивістю являється властивість IMPORTED_LOCATION (і її варіація IMPORTED_LOCATION_<CONFIG> для кожної окремої конфігурації) яка вказує на локацію головного виконуваного файлу на диску. Детальніше у документації про властивості з префіксом IMPORTED_*.

Псевдоніми виконуваних файлів

add_executable(<name> ALIAS <target>)

Створює псевдонім до цілі, так що назва <name> може бути використаною для використання <target> у наступних командах. Ім’я <name> не буде з’являтись у згенерованій системі побудови у якості цілі для побудови. Ціль <target> не може являтись псевдонімом.

Нововведення у версії 3.11: Псевдонім може посилатися на глобальну імпортовану ціль.

Нововведення у версії 3.18: Псевдонім може посилатись на не глобальну імпортовану ціль. Такий псевдонім має зону доступності у директорії у якій він створений і піддиректоріях. Цільова властивість ALIAS_GLOBAL може бути використаною для перевірки чи псевдонім являється глобальним.

Цілі побудови які являються псевдонімами можуть використовуватись у якості цілей для зчитування властивостей з виконуваних цілей з новостворених користувацьких команд і цілей. Вони також можуть тестуватись для встановлення існування за допомогою звичайної субкоманди if(TARGET). Ім’я <name> не можна використовувати для модифікування властивостей цілі <target>, тобто, псевдонім не може використовуватися у якості операнду до команд set_property(), set_target_properties() і target_link_libraries(). Псевдонім цілі не може використовуватись для встановлення або експортування.

Перегляньте також

add_library()

Приклад

Простий приклад використання команди add_executable() можна переглянути у простому демонстративному проекті за адресою https://github.com/yuriysydor1991/kytok.org.ua-CMake-intro-article-resources/blob/main/CMakeLists.txt#L11, який вказувався у статті http://www.kytok.org.ua/post/cmake-lehkyj-start.

Оригінал

Оригінал документу розміщений за адресою https://cmake.org/cmake/help/latest/command/add_executable.html.