我正在尝试从Ubuntu 20.04的源代码构建Scribus(1.5.8和1.7)。它使用cmake作为它的构建系统。我没有使用cmake的经验。
是否有办法从cmake或任何命令行工具获得所有必需和/或可选库的列表?
现在,我的工作流程
- 在源目录下运行
cmake .
- 如果失败,请转3。
- 在错误信息中查找缺失的库。
- 运行
apt search
找到(希望)正确的库 - 运行
apt install
安装(希望)正确的库。 - Goto 1。
- 。
这太乏味了。我的希望是有一些东西可以生成一个库列表,供我查找。理想情况下,可以简单地将此列表提供给apt install
以拉入所有库。
尽管scribus开发人员在他们的wiki中提供了所需库的列表,但这些列表似乎并不详尽或最新。
我尝试使用cmake --graphviz=foo.dot
,但它只生成任何输出后,我得到cmake .
运行成功。
是否有办法从cmake或任何命令行工具获得所有必需和/或可选库的列表?
不是自动的。一般来说,这是不可能的。可能有不被CMake管理的依赖,在CMake代码之外,可能有依赖的依赖,以及许多角落的情况。此外,"库名"one_answers"库名"之间也没有明确的映射关系。和"项目名称";(我的意思是,在。so或。a或。h . ile和实际项目之间)。
一般来说,编译一个库需要(手动)关于该库和库依赖的知识。这正是发行版中的包维护者所做的工作——他们为包管理器编译库并列出所有库依赖项。虽然出现了更智能的"构建系统",但这并不是灵丹妙药,而且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配置,列出所有这样的消息和错误,以便用户看到它们。