如何使用CPack将文件添加到debian包中?

piu*_*lee 9 packaging cmake deb cpack

我正在使用Cmake和Cpack来创建debian包.

我想使用Cpack生成一个包,将该文件安装到特定位置.(例如/ usr/lib/usr/include/aaa)

每个库和头文件都在install命令中指定,我编写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
...
Run Code Online (Sandbox Code Playgroud)

安装命令似乎喜欢:

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)
Run Code Online (Sandbox Code Playgroud)

我用cmake尝试使用"make install"命令make package

cpack制作debian包但没有任何文件.

我做错了什么?如何使用cpack将文件添加到debian包中?

DLR*_*ave 7

您正在使用安装规则DESTINATION值的绝对路径:(即"/ usr/lib")

仅使用"lib".它将放在CMAKE_INSTALL_PREFIX下面,因为它不是绝对路径.

您可以使用CMAKE_INSTALL_PREFIX控制"/ usr"部分,或者稍后根据需要使用某些CPACK_ generator特定的变量(如CPACK_PACKAGING_PREFIX).(希望您甚至不需要,因为根据您正在创建的CPack包的类型,默认行为应该足够大.)

您应该避免在CMake安装规则中使用绝对路径,除非该文件必须始终安装在所有平台上的该位置.