Configuration 当没有.pc文件时,让Autoconf手动检查库

Configuration 当没有.pc文件时,让Autoconf手动检查库,configuration,libraries,autoconf,Configuration,Libraries,Autoconf,我对使用Autoconf比较陌生,到目前为止,我只使用了PKG\u CHECK\u模块,这对我很有用。我遇到了一个包,特别是Debianlibmhash dev v0.9.9.9-1,它不包括.pc文件供pkg config使用 我如何告诉Autoconf检查mhash并将正确的标志传递到g++?使用。但是最好使用AC\u SEARCH\u LIBS——正如手册建议的那样。不确定这是否是进行这种批评的地方(非常确定不是!),但我的学习曲线很长时间以来都是这样的:foo是个好主意,但是很多老勒德分

我对使用Autoconf比较陌生,到目前为止,我只使用了
PKG\u CHECK\u模块
,这对我很有用。我遇到了一个包,特别是Debian
libmhash dev v0.9.9.9-1
,它不包括
.pc
文件供
pkg config
使用


我如何告诉Autoconf检查
mhash
并将正确的标志传递到g++?

使用。

但是最好使用
AC\u SEARCH\u LIBS
——正如手册建议的那样。

不确定这是否是进行这种批评的地方(非常确定不是!),但我的学习曲线很长时间以来都是这样的:foo是个好主意,但是很多老勒德分子说它不好,但我要用它,因为它很棒。(等几个月)哦,不,那些说福坏的人是对的,但现在我有几个月的工作要做,我还有很多额外的工作要做。糟糕透了

简而言之,PKG_CHECK_模块是一个坏主意,但在使用了几个月(或几年)并拥有大量依赖它的代码之前,您可能不会意识到这一点。避免将来的麻烦,现在就开始从configure.ac文件中清除PKG_CHECK_模块。 使用AC_CHECK_LIB、AC_SEARCH_LIBS和AC_CHECK_FUNC,但不要使用PKG_CHECK_模块


pkg config当然有一席之地,精明的管理员可以在config_站点或脚本中使用它来帮助设置配置运行,但pkg_CHECK_模块不应该被使用。

就像你说的,pkg_CHECK_模块看起来太棒了。为什么它如此糟糕,像AC_CHECK_LIB(看起来非常笨重)、AC_SEARCH_LIBS和AC_CHECK_FUNC这样的东西如此棒?此外,如果PKG_CHECK_模块如此可怕,那么它为什么会出现在第一位呢?它不应该只是被弃用,然后在他们发现它不好时立即删除吗?@Tim PKG_CHECK_MODULES由PKG config提供,而不是由任何自动工具提供,因此尽管autoconf维护人员建议不使用它,但他不能删除它并弃用它。但我的意思是他可以删除宏,不是吗?无论如何,PKG_CHECK_模块到底有什么不好的地方?@Tim Eric无法从PKG config中删除宏,因为他不是PKG config的维护者。他无法将其从configure.ac中删除,因为他不维护您的包。关于PKG_CHECK_模块的两个最大的抱怨是,它增加了对PKG config的依赖(或强制用户将PKG_config设置为true),并且它测试的是版本号而不是功能。(我觉得这两种观点都不具有说服力。)在我看来,主要问题是它实际上没有添加任何有用的东西。然而,许多人抱怨它会导致在不太流行的平台上出现细微的构建错误。虽然此链接可能会回答这个问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生变化,只有链接的答案可能会失效。我通常会提供一些解释,但如果答案只是“更好地查看文档”,就像在这种情况下,那么我认为这并不那么糟糕,因为a)这是官方文档,不太可能发生变化;b)如果发生变化,搜索宏名称和获取新的官方文档很容易。