【问题标题】:How to add files to debian package with CPack?如何使用 CPack 将文件添加到 debian 包?
【发布时间】:2011-07-11 02:13:58
【问题描述】:

我正在使用 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)

我已经尝试使用 cmake 的“make install”命令制作包

cpack 制作了 debian 包,但它没有任何文件。

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

【问题讨论】:

    标签: cmake packaging deb cpack


    【解决方案1】:

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

    只使用“lib”。它将被放置在 CMAKE_INSTALL_PREFIX 下,因为它不是绝对路径。

    您可以稍后根据需要使用 CMAKE_INSTALL_PREFIX 或一些 CPACK_ 生成器特定的变量(如 CPACK_PACKAGING_PREFIX)来控制“/usr”部分。 (希望您甚至不需要这样做,因为根据您创建的 CPack 包的类型,默认行为应该足够了。)

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

    【讨论】:

    • 真的非常感谢!!现在我了解了安装命令中的路径。
    猜你喜欢
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    • 2023-03-12
    • 2020-09-19
    • 2020-10-15
    • 1970-01-01
    • 2021-08-24
    • 1970-01-01
    相关资源
    最近更新 更多