在一个几乎总是用GCC构建的已建立的autotools管理的项目中,我决定尝试使用LLVM clang作为g ++替代品,但发现它在使用标准AC_CHECK_HEADER宏的个人编写的头检查中失败。这是检查代码:
oldCPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS -I$GSLINCPATH"
AC_CHECK_HEADER([gsl/gsl_vector.h], [], [AC_MSG_ERROR([GSL vectors not found.])])
CPPFLAGS=$oldCPPFLAGS
这是失败的消息:
checking gsl/gsl_vector.h usability... no
checking gsl/gsl_vector.h presence... no
checking for gsl/gsl_vector.h... no
configure: error: GSL vectors not found.
$ GSLINCPATH的值是/ usr / include(显式检查),/ usr / include / ggsl / gsl_vector.h确实存在,并且此检查代码与GCC很好地协同工作。修改后的$ CPPFLAGS的临时切换似乎是进行此测试的事实上的标准方式,但有更好的方式更便携吗?或者还有其他原因导致这个问题吗?