我正在使用Cmake和Cpack一起创建debian包。
我想使用Cpack生成一个包,将该文件安装到特定位置。 (例如/ usr / lib / usr / include / aaa)
每个库和头文件都在install命令中指定, 我编写CPack选项并将CPack包含在根CMakeLists.txt
中(确保root和中间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
...
install命令似乎喜欢:
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)
我用cmake
尝试使用“make install”命令创建包cpack制作debian软件包,但没有任何文件。
我做错了什么?如何使用cpack将文件添加到debian包中?
答案 0 :(得分:7)
您正在使用安装规则DESTINATION值的绝对路径:(即“/ usr / lib”)
请改用“lib”。它将放在CMAKE_INSTALL_PREFIX下面,因为它不是绝对路径。
您可以使用CMAKE_INSTALL_PREFIX控制“/ usr”部分,或者稍后根据需要使用某些CPACK_ generator特定的变量(如CPACK_PACKAGING_PREFIX)。 (希望您甚至不需要,因为根据您正在创建的CPack包的类型,默认行为应该足够大。)
您应该避免在CMake安装规则中使用绝对路径,除非该文件必须始终安装在所有平台上的该位置。