检查Autotools中的外部软件包 我想用AutoTooSo.c/P>检查我的C++程序中谷歌包的存在。

检查Autotools中的外部软件包 我想用AutoTooSo.c/P>检查我的C++程序中谷歌包的存在。,c++,gnu,autotools,C++,Gnu,Autotools,下面是一个最小的configure.ac: AC_PREREQ([2.69]) AC_INIT([myprog], [1.0], [adress@email.com]) AC_CONFIG_SRCDIR([main.cpp]) AC_CONFIG_HEADERS([config.h]) AM_INIT_AUTOMAKE([foreign -Wall -Werror]) AC_PROG_CXX AC_PROG_CC AC_CHECK_HEADERS([google/sparse_hash_map

下面是一个最小的
configure.ac

AC_PREREQ([2.69])
AC_INIT([myprog], [1.0], [adress@email.com])
AC_CONFIG_SRCDIR([main.cpp])
AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE([foreign -Wall -Werror])

AC_PROG_CXX
AC_PROG_CC
AC_CHECK_HEADERS([google/sparse_hash_map])

AC_CONFIG_FILES(Makefile)
AC_OUTPUT
我运行
autoreconf-vfi
,然后运行
/configure
,得到:

checking google/sparse_hash_map usability... no
checking google/sparse_hash_map presence... no
checking for google/sparse_hash_map... no
< >但是,我可以检查<代码> > /Urs/Cube/SabeSyHasyMaP[/COD>,C++文件],它是一个围绕“代码>/Ur/IpC/谷歌/SabeSHASH/SabeSHAsHeTH.H/COD>”的薄型包装器。此外,微小的代码:

#include <google/sparse_hash_map>
int main() {return 1;}
#包括
int main(){return 1;}
使用
g++test.cpp
编译并执行良好


对新手有什么建议吗?

默认情况下,
AC\u CHECK\u HEADER
宏使用的是
C
编译器。您可以使用以下命令更改当前语言:
AC_LANG([C++])
或:
AC_LANG_PUSH([C++])/AC_LANG_POP
——如(单页)中所述。e、 g

或:


默认情况下,
AC\u CHECK\u头
宏使用的是
C
编译器。您可以使用以下命令更改当前语言:
AC_LANG([C++])
或:
AC_LANG_PUSH([C++])/AC_LANG_POP
——如(单页)中所述。e、 g

或:


虽然已经回答了这个问题,但我要补充的是,您应该始终检查
config.log
,以了解失败原因的详细信息,包括失败的测试程序的源代码以及实际的编译器错误消息。尽管已经回答了这个问题,我要补充的是,您应该经常检查
config.log
,了解失败原因的详细信息,包括失败的测试程序的源代码以及实际的编译器错误消息。
...
AC_LANG([C++])
AC_CHECK_HEADERS([google/sparse_hash_map])
# still in C++ 'mode'
...
AC_LANG_PUSH([C++])
AC_CHECK_HEADERS([google/sparse_hash_map])
AC_LANG_POP([C++])
# restored previous language 'mode'