- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
各种开发人员不鼓励使用 PKG_CHECK_MODULES
(例如,在 this answer 中)但就我所寻找的而言,没有对其原因的清晰、全面的解释。所以,我问:
PKG_CHECK_MODULES
有害吗? -I/usr/lib/i386-linux-gnu/gtk-2.0/include -I/usr/include/atk-1.0
-I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0
-I/usr/include/gio-unix-2.0/ -I/usr/include/glib-2.0
-I/usr/lib/i386-linux-gnu/glib-2.0/include -I/usr/include/pixman-1
-I/usr/include/freetype2 -I/usr/include/libpng12
-lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0
-lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0
-lgthread-2.0 -lrt -lglib-2.0
最佳答案
PKG_CHECK_MODULES
的一个重大问题是它导致了不应该发生的故障。如果用户安装 libfoo
在 /p/a/t/h
并调用 configure
脚本与 LDFLAGS=-L/p/a/t/h
,用户有理由期待配置找到 libfoo
.但是,用户还必须设置 PKG_CONFIG_PATH
使configure
脚本可以找到foo.pc
为了使配置成功,在我看来这是坏的。可以调用 AC_CHECK_LIB
然后只调用 PKG_CHECK_MODULES
如果没有通过标准机制找到该库,则可以避免该问题。另一个问题是 PKG_CHECK_MODULES
完全有可能找一个 .pc
文件中的信息不准确,导致构建失败。在这种情况下,有必要调用 AC_CHECK_LIB
之后 PKG_CHECK_MODULES
.
总之,使用PKG_CHECK_MODULES
正确,有必要调用 AC_CHECK_LIBS
首先,然后有条件地调用 PKG_CHECK_MODULES
,然后调用 AC_CHECK_LIBS
再次验证 PKG_CHECK_MODULES
找到的信息.维护者的所有这些额外工作只是为了让用户更容易在非标准位置安装他们的库是荒谬的。用户应该设置他们的工具链以通过标准机制查找库。
- 编辑 -
澄清一下,我并不是建议使用鼓励使用 PKG_CHECK_MODULES
的库的包。应该避免在他们的配置中使用它。相反,我建议图书馆不要鼓励使用它并停止分发 .pc
文件。 .pc
试图解决的问题文件最好在更高级别处理。 autotools 不是包管理系统,这是一个包管理工具应该解决的问题。
关于autotools - PKG_CHECK_MODULES 被认为是有害的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10220946/
各种开发人员不鼓励使用 PKG_CHECK_MODULES (例如,在 this answer 中)但就我所寻找的而言,没有对其原因的清晰、全面的解释。所以,我问: 为什么会PKG_CHECK_MOD
我的第一个 autotools 项目可能是一些简单而愚蠢的东西:它正在创建一个找不到 glib 和其他第 3 方库的 makefile。 (运行 Ubuntu Linux,如果重要的话,编译 C 静态
我正在尝试使我的 C++ 自动工具项目链接到库,该库起源于 C 库 (libsomelib.so),但也绑定(bind)到 C++ (libsomelib++.so)。我想使用 PKG_CHECK_M
我正在尝试编译一个使用 CMake 的项目和 pkg_check_modules我无法获得 pkg_check_modules查找位于 CMAKE_PREFIX_PATH 下的库. 我相信下面的例子重
我在 configure.ac 中有: PKG_CHECK_MODULES([LIBXML2], [libxml-2.0 >= 2.6.26]) 我使用 $(LIBXML2_LIBS)在 Makefi
我是 GNU autotools 的新手。在我的项目中,当我尝试 ./configure 时,它会生成以下错误: ./configure: line 9852: syntax error near u
我正在尝试编译slurm修改squid的http响应并通过e-cap接口(interface)插入内容(例如图像/脚本)。 但是我在运行 ./configure 时遇到一些问题 自述文件说:构建 ec
我确信这是一个相当简单的问题。我有一个非常简单的 configure.ac 文件,我用它来学习 autoconf 和 pkg-config 如何协同工作。 confgure.ac文件看起来像: AC_
我的项目依赖于一个库(更准确地说,GTK+),所以我在我的 configure.ac 中添加了以下配置: PKG_CHECK_MODULES([GTK], [gtk+-2.0]) AC_SUBST([
我正在尝试编译一个开源代码库,它需要 CMakeLists.txt 文件中的 gtk+: pkg_check_modules (GTK REQUIRED gtk+-2.0>=2.12) 所以我
我正在尝试创建一个相当简单的使用自动工具的 BitBake 配方,您可以在这里看到: SUMMARY = "an example autotools recipe" LICENSE = "MIT" L
我正在尝试创建一个相当简单的使用自动工具的 BitBake 配方,您可以在这里看到: SUMMARY = "an example autotools recipe" LICENSE = "MIT" L
我正在尝试在 win32 机器上构建 OpenSceneGraph 的 pdf 插件。该插件使用 cmake 的 PKG_CHECK_MODULES 宏来查找 cairo 和 poppler 库。我不
我是一名优秀的程序员,十分优秀!