Как я могу использовать CMake и CPack с зависимостью, которая перезаписывает мои переменные? - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь использовать CPack для упаковки своего проекта, но у меня возникла проблема с одной из моих зависимостей.

Во-первых, я пытаюсь использовать современный стиль CMake, полагаясь на цели и зависимости, смоделированные между целями с помощью target_link_libraries. Мой проект использует библиотеку CMocka в качестве зависимости. Я добавил репозиторий CMocka как подмодуль git, и у меня есть add_subdirectory(cmocka_dir) в моем собственном файле CMakeLists.txt.

Я также использую CPack с генератором TGZ, чтобы собрать все мои файлы в архив , Я просто set(CPACK_GENERATOR TGZ) и include(CPack) по моему CMakeLists.txt. Я обнаружил, что это заботится обо всем, то есть, пока я не начал использовать CMocka. CMocka устанавливает множество CPACK_xxx переменных внутри его root CMakeLists.txt. Я считаю, что когда я включаю подкаталог CMocka в свой собственный проект, эти переменные распространяются внутри моей области видимости CMake и мешают процессу упаковки.

Мой вопрос заключается в том, как я могу это исправить. В частности:

  1. Есть ли способ изолировать CMocka в его собственной среде или иным образом предотвратить его нарушение в процессе упаковки?
  2. Я ошибаюсь, включив CMocka с помощью add_subdirectory?
  3. Я неправильно делаю CPack, просто установив CPACK_GENERATOR и выполнив include(CPack)?

Спасибо за ваши мысли.

...