如何检查AC_PROG_CXX是否失败?

时间:2014-11-24 17:47:01

标签: autoconf

AC_PROG_CXX宏检查可能的C ++编译器,如果发生故障,很高兴只需将CXX设置为g ++,即使它知道g ++并不存在。

我的问题是,你怎么能理解AC_PROG_CXX是否确实找到了合适的编译器?

我问,因为我的项目中有一个可以选择编译的C ++库。我似乎无法弄明白我是怎么知道我是否可以用CXX编译任何东西。


某些像AC_PROG_CC_C99这样的宏会给出一个变量(在这种情况下为ac_cv_prog_cc_c99),可以告诉我该功能是否存在。我尝试了ac_cv_prog_cxx和类似的事情,但它似乎并不存在。

1 个答案:

答案 0 :(得分:3)

您可以尝试编译最小程序,例如,

AC_LANG_PUSH([C++])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
  [[#ifndef __cplusplus
    #error "broken C++"
    #endif]])],,
  [CXX=;])
AC_LANG_POP([C++])

如果编译失败,我们将CXX显式设置为空字符串。所以取决于你想做什么:

if test "x$CXX" != x ; then
  ... we have a working C++ compiler - setup optional stuff ...
fi

或作为Makefile.am文件中conditional版本的一部分:

AM_CONDITIONAL([ENABLE_CXX_SRC], [test "x$CXX" != x])