Autoconf 如何解决配置检查

Autoconf 如何解决配置检查,autoconf,msys,pkg-config,Autoconf,Msys,Pkg Config,现在我正试图在Windows上使用MSYS从源代码构建libsamperate,但我遇到了一个配置检查问题,我以前安装过FFTW和libsndfile,它们的include lib文件和pkg config文件都在正确的位置,但是当我使用sh./configure为libsamprate生成makefile时,输出总是提到 checking for pkg-config... no checking for SNDFILE... no 我还设置了PKG_CONFIG_PATHusr/local

现在我正试图在Windows上使用MSYS从源代码构建libsamperate,但我遇到了一个配置检查问题,我以前安装过FFTW和libsndfile,它们的include lib文件和pkg config文件都在正确的位置,但是当我使用sh./configure为libsamprate生成makefile时,输出总是提到

checking for pkg-config... no
checking for SNDFILE... no
我还设置了PKG_CONFIG_PATHusr/local/lib/pkgconfig并尝试了很多次,但结果似乎是一样的


有人知道吗?

如评论中所述,您的环境未设置为运行pkg config可执行文件。与pkg config相关的问题很多,现在越来越多的人认为正确的解决方案是完全停止使用pkg config。不幸的是,如果您试图安装一个使用pkg config的软件包,您将无法使用该解决方案。最接近的方法是在您的环境中将PKG_CONFIG设置为“true”或“:”。这会导致pkg config不发出输出,但在运行时总是返回true,因此需要通过标准机制LDFLAGS等指定库和头的位置

pkg-config非常好,因为它允许安装包的用户不知道标准标志。pkg-config的问题在于它允许用户不知道


作为包维护者,您应该停止使用pkg config。作为用户,您应该在您的环境或CONFIG.site中设置PKG_CONFIG=:或者养成使用PKG_CONFIG=:作为参数调用configure的习惯。如果您使用的软件包依赖于古老的autoconf,而在autoconf中您无法将此类标志作为参数传递,我不确定适当的操作是什么,但建议软件包维护程序升级可能不是一个坏主意

configure脚本会留下一个config.log文件,其中列出已完成的确切检查以及它们产生的任何错误消息。它相当大,但是请查看一下,并尝试查找与pkg config测试相关的部分,因为它没有找到pkg config,它也不可能找到SNDFILE,所以现在不关心该检查。如果它不能告诉您什么设置不正确,请尝试在问题中添加相关的位。我已经检查了日志文件,但它似乎不是很有用的信息…您能否解释一下sh.exe如何搜索第三方库?sh.exe不搜索第三方库。配置由sh.exe解释的脚本。此外,您对它如何搜索库并不感兴趣,如果库使用它,您会询问pkg config,但您的似乎感兴趣,但在它如何搜索pkg config时,它没有找到它,因此它无法询问库安装在哪里。它只是尝试运行pkg config pkg-config.exe。如果它不在路径中,它将找不到它。非常感谢!:谢谢你的回答:这个答案太愚蠢了。pkg config肯定比手动传递CFLAGS和LDFLAGS好得多,因为某些库可能需要特殊的CFLAGS和LDFLAGS。pkg config非常容易使用,并且只配置了pkg_config_PATH环境变量,如果您进行交叉编译,可能还配置了pkg_config_SYSROOT_DIR。@Thomas pkg config非常容易使用,是一个有用的工具。PKG_CHECK_模块是一个可怕的乱七八糟的东西,永远不应该使用。无需手动设置CFLAGS或LDFLAGS;这就是config.site的用途。PKG_CHECK_模块是不知道如何使用这些工具的人的拐杖,它经常给不知道如何使用这些工具的人带来问题。这已经被讨论了很多年了,关于autotool邮件列表的共识是这是一个令人憎恶的问题。