我在使用 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 来执行此操作。
谢谢!