2014-11-24 139 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