Как добавить файлы в пакет debian с помощью CPack?

Я использую Cmake с Cpack для создания пакета debian.

Я хотел бы использовать Cpack для создания пакета, который установит эти файлы в определенное место. (например, / usr / lib / usr / include / aaa)

каждая библиотека и файлы заголовков указываются в команде установки, и я пишу параметры CPack и включаю CPack в корневой файл CMakeLists.txt

(убедитесь, что корневой и средний CMakeList.txt имеют только команду set или add_subdirectory)

Каталог проекта выглядит следующим образом.

root(CMakeLists.txt CPack) ┬AAA(CMakeLists.txt)─┬─AAA2(CMakeLists.txt install)-src-include
                           │                    └─AAA3(CMakeLists.txt install)-src-include
                           ├BBB(CMakeLists.txt)─┬─BBB2(CMakeLists.txt install)-src-include
...

команде установки вроде бы нравится:

ADD_LIBRARY(${AAA2} SHARED ${CMAKE_CURRENT_SOURCE_DIR}/${AAA2_SOURCE_DIR}/AAA.c)
INSTALL(TARGETS ${AAA2} DESTINATION /usr/lib)
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${AAA_INCLUDE_DIR}/AAA2.h DESTINATION /usr/include/AAA)

Я пробовал сделать пакет с помощью команды "make install" с помощью cmake

cpack создал пакет debian, но у него нет файла.

что я сделал не так? как я могу добавить файлы в пакет debian с помощью cpack?


person pius lee    schedule 08.03.2011    source источник


Ответы (1)


Вы используете абсолютные пути для значений DESTINATION правила установки: (например, "/ usr / lib")

Вместо этого используйте просто "lib". Который будет помещен под CMAKE_INSTALL_PREFIX, поскольку это не абсолютный путь.

Вы можете управлять частью «/ usr» с помощью CMAKE_INSTALL_PREFIX или некоторых переменных, специфичных для генератора CPACK_, таких как CPACK_PACKAGING_PREFIX, при необходимости позже. (Надеюсь, вам даже не понадобится, поскольку поведение по умолчанию должно быть в значительной степени достаточным в зависимости от того, какой тип пакета CPack вы создаете.)

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

person DLRdave    schedule 09.03.2011
comment
большое спасибо!! теперь я понимаю пути в команде установки. - person pius lee; 11.03.2011