我想通过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
编译并执行正常。
对新手的任何建议?
答案 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'