检查Autotools中的外部包

时间:2014-03-10 14:38:53

标签: c++ gnu autotools

我想通过Autotools检查我的C ++程序中是否存在google sparsehash包。

这是一个最小的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

但是,我可以检查/usr/include/google/sparse_hash_map的存在,这是一个C ++文件,它是/usr/include/google/sparsehash/sparsehashtable.h的一个薄包装器。而且,微小的代码:

#include <google/sparse_hash_map>
int main() {return 1;}

使用g++ test.cpp编译并执行正常。

对新手的任何建议?

1 个答案:

答案 0 :(得分:4)

AC_CHECK_HEADER宏默认使用C编译器。您可以使用以下代码更改当前语言:AC_LANG([C++])或:AC_LANG_PUSH([C++]) / AC_LANG_POP - 如(单页)manual中所述。如,

...
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'