gpt4 book ai didi

cmake - 如何使用CPack将文件添加到Debian软件包中?

转载 作者:行者123 更新时间:2023-12-04 04:13:40 43 4
gpt4 key购买 nike

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

我已经尝试了使用带有make的“make install”命令的make软件包

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

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

最佳答案

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

仅使用“lib”代替。由于它不是绝对路径,因此将放置在CMAKE_INSTALL_PREFIX下。

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

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

关于cmake - 如何使用CPack将文件添加到Debian软件包中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5232555/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com