我试图从Ubuntu20.04的源代码构建Scribus (1.5.8和1.7)。它使用cmake作为它的构建系统。我对cmake没有经验。
有没有办法从cmake或任何命令行工具中获取所有必需和/或可选库的列表?
现在,我的“工作流程”如下:
libraries.
cmake .。如果失败,则转到3。否则,转到7.
H 113运行apt install以安装(希望)正确的
这是非常乏味的。我希望有一些东西,只是生成一个库的列表,cmake将寻找。理想情况下,可以简单地将此列表提供给apt install以获取所有库。
尽管scribus开发人员在他们的wiki中提供了所需库的列表,但这些列表似乎并不是详尽无遗的,也不是最新的。
我尝试使用cmake --graphviz=foo.dot,但是只有在cmake .成功运行之后,它才会生成任何输出。
发布于 2022-05-21 10:44:04
是否有办法从cmake或任何命令行工具中获取所有必需和/或可选库的列表?
不是用自动化的方式。一般来说,这是不可能的。在CMake代码之外,可能存在依赖项而不是由CMake管理的依赖项,可能存在依赖项的依赖项,以及许多角的情况。此外,“库名”和“项目名”之间没有明确的映射(我指的是.so、.a或.h文件与实际项目之间的映射)。
通常,编译库需要(手动)有关该库和库依赖项的知识。这正是发行版中包维护人员所做的工作--他们编译库并列出包管理器的所有库依赖项。尽管出现了越来越聪明的“构建系统”,但这并不是一个灵丹妙药,而且C++生态系统过于多样化。
但是可以肯定的是--谷歌scribus,找到源代码https://github.com/scribusproject/scribus,检查文档,找到项目https://github.com/scribusproject/scribus/blob/master/BUILDING的依赖关系,都列出了如下内容:
Requirements:
Qt >= 6.2
Freetype >= 2.1.7 (2.3.x strongly recommended)
cairo >= 1.14.x
harfbuzz = > 0.9.42
libicu
libjpeg (depending on how Qt is packaged)
libpng >= 1.6.0
libtiff >= 3.6.0
libxml2 >= 2.6.0
LittleCMS (liblcms) >= 2.0 (2.1+ recommended)
poppler and poppler-cpp >= 0.62.0
hunspell
Python >= 3.6
Recommended:
CUPS
Fontconfig >= 2.0
GhostScript >= 8.0 (9.0+ or greater preferred)
tkinter for the font sampler script
python-imaging for the font sampler preview
pkgconfig (to assist finding other libraries)
podofo - 0.7.0+ for enhanced Illustrator AI/EPS import, svn versions
boost and boost-devel构建系统仍然是一条巨大的道路--使用cmake .,库维护人员可以为用户显示一条奇特的错误消息-- "Och - install libpng, it was not found",这一切都让人愉快。它仍然比从编译器或链接器获取-lpng: not found消息要好得多。例如,您可以编写一个CMake配置,列出所有这样的消息,以及稍后的错误,这样用户就可以看到所有这些消息。
https://stackoverflow.com/questions/72328292
复制相似问题