用自己的依赖包打包多个包

CPack multiple packages with own dependencies

本文关键字:包打包 自己的 依赖      更新时间:2023-10-16

我在用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存档目的地~/下载/ComponentExampleStart/lib组件库)安装(目标mylibapp运行时目的地~/下载/ComponentExampleStart/bin组件应用程序)安装(文件mylib.h目的地~/下载/ComponentExampleStart/包括组件的标题)写入dummy_main1.c "int main(int argc, char** argv){返回0;}"add_executable (dummy_main1 dummy_main1.c)安装(FILES ${CMAKE_CURRENT_SOURCE_DIR}/dummy_main1 DESTINATION/tmp组件头文件可选权限OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE)file(WRITE dummy_main2.c "int main(int argc, char** argv){返回0}")add_executable (dummy_main2 dummy_main2.c)安装(FILES ${CMAKE_CURRENT_SOURCE_DIR}/dummy_main2 DESTINATION/tmp组件mylibapp可选权限OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE)设置(cpack_generator " deb ")设置(cpack_source_generator tgz)设置(cpack_debian_package_shlibdeps on)设置(CPACK_SET_DESTDIR "on")集(CPACK_DEB_COMPONENT_INSTALL)集(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"运行时")集(CPACK_COMPONENT_LIBRARIES_GROUP"发展")集(CPACK_COMPONENT_HEADERS_GROUP"发展")集(CPACK_COMPONENT_LIBRARIES_DEPENDS"libxml2")集(CPACK_COMPONENT_HEADERS_DEPENDS"libxml2")集(CPACK_DEBIAN_PACKAGE_DEPENDS libusb - 1.0 - 0)设置(CPACK_PACKAGE_CONTACT "Example ")设置(cpack_package_file_name "${cmake_project_name}_${version}_${cpack_debian_package_architecture}")包括(CPack)之前

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

我的目标是创建两个不同依赖关系的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来做这件事。

谢谢!

我终于成功地隔离了依赖项。问题是我使用的CMake版本(2.8)。这可以在最新版本(目前使用3.3)中使用CPack宏来完成:CPACK_DEBIAN__PACKAGE_DEPENDS