2014-11-24 69 views
2

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

我的问题是,你怎么能明白,如果AC_PROG_CXX确实找到了一个合适的编译器?

我在问,因为我的项目中有一个C++库,可以选择编译。我似乎无法弄清楚,我应该知道我是否可以用CXX实际编译任何东西。


有的像AC_PROG_CC_C99宏的给一个变量(在这种情况下ac_cv_prog_cc_c99)如果该功能存在与否,可以告诉我。我试过ac_cv_prog_cxx和类似的东西,但似乎并不存在。

回答

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]) 
+0

谢谢。我将发送一个补丁来为'AC_PROG_CXX'本身添加一个变量来告诉结果,因为再次调用编译器能够告诉应该知道什么是没有意义的。 – Shahbaz 2014-11-28 09:56:38