Додає піддиректорію для обробки системою CMake.

Сигнатура

add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL] [SYSTEM])

Опис

Додає піддиректорію для обробки і побудови за допомогою системи CMake. Параметр source_dir вказує на директорію у якій розміщений файли вихідного джерельного коду і CMakeLists.txt. Якщо для команди вказано відносний шлях до директорії, система CMake обчислить повний шлях до директорії базуючись на повному абсолютному шляху до поточної робочої директорії (зазвичай), але можна вказувати і абсолютний шлях. Параметр binary_dir вказує директорію у якій розміщувати вихідні збудовані файли. Якщо цей параметр являє собою відносний шлях, він буде враховуватись з врахуванням поточної бінарної директорії, але також може являти собою і абсолютний шлях. Якщо параметр binary_dir не вказаний, буде використовуватись значення параметру source_dir перед обчисленням будь-якого відносного шляху (зазвичай). Файл CMakeLists.txt у вказаній директорії вихідного джерельного коду буде оброблятись системою CMake одразу перед обробкою поточного подальшого вводу команд після цієї команди.

Якщо вказаний аргумент EXCLUDE_FROM_ALL, тоді цілі у піддиректорії не будуть включатись у список усіх цілей ALL для побудови за умовчанням, і також не буде включатись у проектні файли використовуваної IDE. Користувачі будуть змушені явно будувати цілі у піддиректорії. Даний параметр призначений для використання коли піддиректорія містить окрему частину проекту, яка є корисною, але не обов’язковою, на подобі набори прикладів тощо. Зазвичай піддиректорія повинна містити власне використання команди project() отож повна система побудова буде згенерованою у піддиректорії (на подобі файлових рішень Visual Studio IDE). Необхідно звернути увагу, що між цільові залежності витісняють цю поведінку. Якщо будова цілі батьківського проекту залежить на цілі піддиректорії, залежна ціль буде включатись у батьківську систему побудови проекту для вдоволення залежностей.

Нововведення у версії 3.25: Якщо наданий аргумент SYSTEM, властивість директорії SYSTEM піддиректорії буде встановлена у значення True. Дана властивість використовується для ініціалізації властивості SYSTEM кожної не імпортованої цілі створеної у цій піддиректорії.

Приклад

Приклад використання команди add_subdirectory разом з змінною CMAKE_SOURCE_DIR можна переглянути у демонстративному проекті простого текстового редактора за адресою https://github.com/yuriysydor1991/Qt1SimpleTextEditor/blob/1.0.0/CMakeLists.txt#L47.

Оригінал

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