Как изменить папку назначения пакета в CPack?

У меня есть многомодульный проект CMake с корневым CMakeLists.txt с несколькими макросами add_subdirectory.

Насколько я понимаю, для CPack / CMake по умолчанию создается пакет в корневой папке проекта, где находится корневой файл CMakeLists.txt. Я хотел бы создать отдельный установочный модуль со своей папкой и создавать там пакеты? Как это сделать?

3 ответа

Решение

Посмотрите на CPACK_TOPLEVEL_TAG и CPACK_PACKAGE_FILE_NAME переменные в документации.

Чтобы получить созданные пакеты в подкаталоге "packages" вашего каталога сборки, используйте:

SET(CPACK_OUTPUT_FILE_PREFIX packages)

Используйте переменную CPack CPACK_PACKAGE_DIRECTORY.

Пример:

      set(CPACK_PACKAGE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/Packaging")

Вы не используете не документированы переменную CPACK_OUTPUT_FILE_PREFIXкак предложено в одном из ответов. Это делает -B аргумент cpack команда непригодна для использования (проверено с CMake v3.21.0).

Также обратите внимание, что переменные CPACK_PACKAGE_FILE_NAME а также CPACK_TOPLEVEL_TAG упомянутые в принятом ответе не связаны с каталогом пакета (выходным), используемым CPack.

Другие вопросы по тегам