Скажем, у меня есть библиотека ProjectA
где я определил пользовательскую цель build-tests
в моем CMakefile, чтобы построить мои тесты, чтобы я мог сделать make test
после этого. (увидеть CMake & CTest: make test не создает тесты).
Затем у меня есть вторая библиотека ProjectB
это зависит от ProjectA
, Я использую подмодуль git, так что я могу сделать add_subdirectory(ProjectA)
в ProjectB
CMakefile. Проблема в том, что я хотел бы сделать то же самое: определить пользовательскую цель build-tests
построить тесты ProjectB
но я не могу, потому что это уже было определено в ProjectA
…
Моя проблема похожа на Как справиться с транзитивным конфликтом зависимостей, используя подмодули Git и CMake? а также CMake и использование git-submodule для зависимых проектов но они могут определить одну цель, чтобы избежать этого, в то время как я хотел бы иметь возможность сделать make build-tests
в ProjectA
И в ProjectB
,
Итак, есть ли способ, например, определить локальную цель для проекта cmake? или есть умный способ сделать то, что я хотел бы сделать? (что кажется вполне естественным)
Итак, есть ли способ, например, определить локальную цель для проекта cmake? или есть умный способ сделать то, что я хотел бы сделать? (что кажется вполне естественным)
Для вас работают с пользовательскими целями, вероятно, ALLOW_DUPLICATE_CUSTOM_TARGETS
могу сделать работу.
Документация действительно достаточно ясна:
Разрешить создание дубликатов пользовательских целей.
Если вы пойдете немного дальше, вы обнаружите, что:
Свойство позволяет несколько
add_custom_target
Команда вызывает в разных каталогах, чтобы указать одно и то же имя цели.
К сожалению, это также имеет некоторые ограничения:
[…] установка этого свойства приведет к тому, что не-Makefile-генераторы выдадут ошибку и откажутся генерировать проект.
Внимательно прочитайте документацию (см. Ссылку выше), чтобы узнать, подходит ли она для ваших целей.
Других решений пока нет …