2011-03-08 66 views
9

我使用Cmake与Cpack创建debian软件包。如何使用CPack将文件添加到debian软件包?

我想使用Cpack来生成一个包,将该文件安装到特定位置。 (例如:/ usr/lib中的/ usr /包含/ AAA)

每个库和头文件在安装命令指定 和我写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) 

我试图用make package “使安装” 命令的cmake

cpack取得Debian软件包,但不具有任何文件。

我做错了什么?我怎么能添加文件到debian软件包与cpack?

回答

7

您使用绝对路径为您安装规则目标值(即, “/ usr/lib目录”)

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

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

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

+0

真的很感谢你!现在我了解了安装命令中的路径。 –

相关问题