Мета-цели для целых подкаталогов CMake - PullRequest
0 голосов
/ 12 декабря 2018

Вариант использования

У меня есть несколько компонентов CMake в структуре каталогов, рекурсивно добавленных из файла CMake верхнего уровня.Я не хочу строить все каждый раз, поэтому я хотел бы строить все цели только из определенного каталога.

Решения, проанализированные до сих пор

Добавить option для каждой верхнейкомпонента уровня add_subdirectory и всегда строит все

Pro: это также экономит время конфигурирования CMake.

Минусы: это не автоматически (поскольку это применимо только к уровням, где вы добавляете этиопции).Это может стать критическим, если ваши компоненты зависят друг от друга (что, к счастью, не так в моем случае использования).

Используйте add_custom_target, а затем add_dependencies для определения мета-целей

Pro: это позволяет использовать метапакеты практически на каждом уровне.

Минусы: это требует много ручной работы.Впоследствии добавленные цели могут быть забыты.

Примечание 1: определение библиотеки INTERFACE не работает, так как не генерирует цель make / ninja.

Примечание 2: У меня естьплохое предчувствие при использовании решения, представленного в Получение целей, добавленных в подкаталог , поскольку оно скрывает реальные команды за макросами.

Вызов make из определенного подкаталога

Pro: Это выполняетсценарий использования.

Con: Вам нужно cd в нужный каталог

Ссылка: Эквивалент ниндзя для функции Make из этого каталога вниз (с CMake)?

Вопрос

Есть ли способ определить такой метапакет автоматически или хотя бы полуавтоматически?Есть ли способ автоматически собрать все цели, определенные в определенном подкаталоге?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...