gpt4 book ai didi

autotools - PKG_CHECK_MODULES 被认为是有害的?

转载 作者:行者123 更新时间:2023-12-03 10:59:34 26 4
gpt4 key购买 nike

各种开发人员不鼓励使用 PKG_CHECK_MODULES (例如,在 this answer 中)但就我所寻找的而言,没有对其原因的清晰、全面的解释。所以,我问:

  • 为什么会PKG_CHECK_MODULES有害吗?
  • 有哪些替代方案?

  • 我,其中之一,今天第一次使用它。我发现它非常有用,特别是对于处理非常复杂的库集,例如 GTK+,我有所有这些依赖项:
    -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/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com