【问题标题】:CPack multiple packages with own dependenciesCPack 多个具有自己依赖项的包
【发布时间】:2016-01-19 08:24:51
【问题描述】:

我在使用 CPack 和 CMake 创建两个 debian 软件包时遇到问题。我已经完成了来自here 的示例,并且我确实设法创建了两个不同的 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 来执行此操作。

谢谢!

【问题讨论】:

    标签: c++ linux cmake packages cpack


    【解决方案1】:

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

    【讨论】:

    • 是的,抱歉,我不得不等 20 小时 :( 无论如何谢谢!
    猜你喜欢
    • 1970-01-01
    • 2019-01-07
    • 2020-07-29
    • 1970-01-01
    • 2023-03-14
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    相关资源
    最近更新 更多