Я экспериментирую с CPack
модулем CMake
и получил несколько запутанное поведение. У меня CpackMylib.cmake
, который входит в корень CMakeLists.txt
. Это выглядит следующим образом:
include(CPack) #included on top
install (TARGETS mylib
LIBRARY
DESTINATION /usr/lib
COMPONENT mylib-all
)
install (DIRECTORY include/
DESTINATION /usr/include/mylib
COMPONENT mylib-all)
set(CPACK_PACKAGE_NAME "mylib")
set(CPACK_GENERATOR "DEB")
А при запуске make package
не удается создать пакет со следующей трассировкой:
Run CPack packaging tool...
CPack: Create package using STGZ
CPack: Install projects
CPack: - Run preinstall target for: mylib
CPack: - Install project: mylib
CMake Error at /home/krjoff/mylib/cmake_install.cmake:55 (file):
file INSTALL cannot copy file "/home/krjoff/mylib/libmylib.so" to
"/usr/lib/mylib.so".
CMake Error at /home/krjoff/mylib/cmake_install.cmake:73 (file):
file INSTALL cannot set permissions on "/usr/include/mylib"
CPack Error: Error when generating package: mylib
Makefile:129: recipe for target 'package' failed
make: *** [package] Error 1
Похоже, он просто игнорирует все переменные, которые я поставил после include(CPack)
, и пытается собрать какой-то пакет STGZ
и установить его немедленно. Но если я поставлю include(CPack)
в конце CpackMylib.cmake
после того, как все настройки будут выполнены, он будет работать отлично.
Может кто-нибудь объяснить, зачем ставить include(CPack)
после всех настроек конфигурации?