Вариант использования
У меня есть несколько компонентов CMake в структуре каталогов, рекурсивно добавленных из файла CMake верхнего уровня.Я не хочу строить все каждый раз, поэтому я хотел бы строить все цели только из определенного каталога.
Решения, проанализированные до сих пор
Добавить option
для каждой верхнейкомпонента уровня add_subdirectory
и всегда строит все
Pro: это также экономит время конфигурирования CMake.
Минусы: это не автоматически (поскольку это применимо только к уровням, где вы добавляете этиопции).Это может стать критическим, если ваши компоненты зависят друг от друга (что, к счастью, не так в моем случае использования).
Используйте add_custom_target
, а затем add_dependencies
для определения мета-целей
Pro: это позволяет использовать метапакеты практически на каждом уровне.
Минусы: это требует много ручной работы.Впоследствии добавленные цели могут быть забыты.
Примечание 1: определение библиотеки INTERFACE
не работает, так как не генерирует цель make / ninja.
Примечание 2: У меня естьплохое предчувствие при использовании решения, представленного в Получение целей, добавленных в подкаталог , поскольку оно скрывает реальные команды за макросами.
Вызов make
из определенного подкаталога
Pro: Это выполняетсценарий использования.
Con: Вам нужно cd
в нужный каталог
Ссылка: Эквивалент ниндзя для функции Make из этого каталога вниз (с CMake)?
Вопрос
Есть ли способ определить такой метапакет автоматически или хотя бы полуавтоматически?Есть ли способ автоматически собрать все цели, определенные в определенном подкаталоге?