我正在考虑从一个现有的库(paho-mqtt-c)创建一个Debian软件包。这个项目使用CMake作为它的构建系统。经过一些研究,我认为我需要创建两个或三个不同的软件包:
- libpaho-mqtt 3(包含库.so文件和相关内容)
- libpaho-mqtt 3-dev(带有头文件)
- 此外,也许我需要第三个包与示例文件或文档(称为
paho-mqtt3
?)
我做了一些研究,当我使用CMake作为我的构建系统时,似乎至少存在三种不同的方法来创建Debian软件包:
1.使用Debian文档(第8章)中描述的debmake过程。
1.使用cmake-debhelper。
1.使用dh-cmake
我已经研究了所有三种方法,似乎每一种都有一些优点和缺点。
德马克
据我所知,使用debmake时,我假设我有一个包含源代码和构建系统的上游压缩包,然后我在提取的压缩包上调用debmake。之后,我得到了很多模板,我需要手动调整以填补缺失的空白。我开始这样做,但它似乎相当复杂。
cmake-debhelper
我尝试使用它,但收到了很多错误。github页面有一个open issue没有解决方案,所以我停止了寻找这个。这也是paho-mqtt-c
构建系统目前正在使用的,但由于链接的问题,它不工作。
dh-cmake
我简单地看了一下这个,它似乎是最现代的解决方案,应该有可能与CPack合并。然而,似乎dh-cmake只适用于Ubuntu 18.04和16.04,但我使用的是Ubuntu 19.10,所以我无法在我的系统上安装dh-cmake。
我的研究是否遗漏了什么?从CMake管理的软件创建Debian软件包的推荐步骤是什么?哪些文档值得阅读?
2条答案
按热度按时间but5z9lq1#
简而言之,在Ubuntu上,您至少需要创建以下文件:
然后运行
debuild
,它会运行cmake install
到临时文件夹,并从其中打包一个可安装的deb
软件包。要快速创建这些debian
文件,请运行dh_make --createorig
并按s
查看源代码包。然后您需要仔细编辑debian文件,如Debian New Maintainers' Guide的Chapter 4. Required files under the debian directory所述。如果您需要设置cmake属性或进行任何其他配置,则需要在
rules
中调整override_dh_auto_configure
:这里
-DCMAKE_LIBRARY_PATH=$(DEB_HOST_MULTIARCH)
和-DIWINFO_SUPPORT=OFF
将直接传递给cmake。然后你可以上传你的软件包到Ubuntu PPA:
之后,PPA构建机器人将编译并发布您的软件包到PPA,您将在https://launchpad.net/~your-launchpad-user/+archive/ubuntu/your-ppa/+packages上看到它们
不幸的是还有很多其他的步骤,我只是简单地描述了一下。
dh-cmake是更复杂的东西所需要的,如果你想发布到PPA,CPack就不起作用了,因为它的buildbot无论如何都会运行debhelper(debuild的简短版本),所以它需要
debian
文件夹q5lcpyga2#
或者您可以将
cpack
与cmake
一起使用来生成deb
,这相当容易,但是cmake和cpack文档很少,但它们仍然工作良好。我建议将以下内容添加到CMakeLists.txt的底部postisnt
将在安装后运行一个脚本,请参见CMAKE/CPACK:我希望deb在安装后执行一个bash脚本,但它不适用于更多内容。