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

时间:2011-03-08 12:38:04

标签: cmake packaging deb cpack

我正在使用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包中?

1 个答案:

答案 0 :(得分:7)

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

请改用“lib”。它将放在CMAKE_INSTALL_PREFIX下面,因为它不是绝对路径。

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

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