3

我在使用 CPack 和 CMake 创建两个 debian 包时遇到问题。我已经完成了这里的示例,并且我确实设法创建了两个不同的 debian 包,但我希望它们每个都有自己的依赖项。结果 CMakeLists.txt 如下:

cmake_minimum_required(版本 2.8.0)
项目(MyLib)

add_library(mylib mylib.cpp)

add_executable(mylibapp mylibapp.cpp)
target_link_libraries(mylibapp mylib)

安装(目标 mylib
  档案
  目的地 ~/Downloads/ComponentExampleStart/lib
  组件库)

安装(目标 mylibapp
  运行
  目的地 ~/Downloads/ComponentExampleStart/bin
  组件应用)

安装(文件 mylib.h
  DESTINATION ~/Downloads/ComponentExampleStart/include
  组件标题)

file(WRITE dummy_main1.c "int main(int argc, char** argv){return 0;}")
add_executable(dummy_main1 dummy_main1.c)
INSTALL (FILES ${CMAKE_CURRENT_SOURCE_DIR}/dummy_main1 DESTINATION /tmp COMPONENT headers OPTIONAL PERMISSIONS OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE)

file(WRITE dummy_main2.c "int main(int argc, char** argv){return 0;}")
add_executable(dummy_main2 dummy_main2.c)
安装(文件 ${CMAKE_CURRENT_SOURCE_DIR}/dummy_main2 DESTINATION /tmp COMPONENT mylibapp 可选权限 OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE )

SET (CPACK_GENERATOR "DEB")
SET (CPACK_SOURCE_GENERATOR TGZ)
设置(CPACK_DEBIAN_PACKAGE_SHLIBDEPS 开启)
SET(CPACK_SET_DESTDIR“开”)
设置(CPACK_DEB_COMPONENT_INSTALL ON)
设置(CPACK_PACKAGE_NAME "MyLib")
设置(CPACK_PACKAGE_VENDOR“CMake.org”)
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "MyLib - CPack 组件安装示例")
设置(CPACK_PACKAGE_VERSION“1.0.0”)
设置(CPACK_PACKAGE_VERSION_MAJOR “1”)
设置(CPACK_PACKAGE_VERSION_MINOR“0”)
设置(CPACK_PACKAGE_VERSION_PATCH“0”)
set(CPACK_PACKAGE_INSTALL_DIRECTORY "CPack 组件示例")
设置(CPACK_COMPONENTS_ALL 应用程序库头文件)
设置(CPACK_COMPONENT_APPLICATIONS_GROUP“运行时”)
set(CPACK_COMPONENT_LIBRARIES_GROUP "发展")
set(CPACK_COMPONENT_HEADERS_GROUP "发展")
设置(CPACK_COMPONENT_LIBRARIES_DEPENDS“libxml2”)
设置(CPACK_COMPONENT_HEADERS_DEPENDS“libxml2”)

设置(CPACK_DEBIAN_PACKAGE_DEPENDS “libusb-1.0-0”)
SET(CPACK_PACKAGE_CONTACT“示例”)
SET (CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}_${VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}")

包括(CPack)

注意dummy_main1 和 dummy_main2 使 shlibdeps 工作,因为每个包至少需要一个可执行文件)。

我的目标是创建 2 个具有不同依赖项的不同 debian 包,例如:

MyLib_1.0.0_amd64-Developers.deb --- depends on ---> libxml2
MyLib_1.0.0_amd64-Runtime.deb --- depends on ---> lubusb-1.0-0

但我没有找到 CPACK 宏来做到这一点。我已经阅读了很多论坛和文档,但没有一个我测试过的对我有用。CPACK_DEBIAN_PACKAGE_DEPENDS 宏工作正常,但它为两个包设置了相同的依赖项。有什么方法可以实现我的目标吗?我正在使用 CMake 2.8 来执行此操作。

谢谢!

4

1 回答 1

2

好吧,我终于设法隔离了依赖项。问题是我使用的 CMake 版本(2.8)。这可以通过 CPack 宏在最新版本(当前使用 3.3)中完成:CPACK_DEBIAN__PACKAGE_DEPENDS

于 2015-10-21T18:55:02.273 回答