2012-08-10 30 views
21

Derleyicinin C++ 11 özelliklerini kontrol etmek için AX_CXX_COMPILE_STDCXX_0X (autoconf arşivine bakabilirsiniz) kullanabilirim. -std=c++0x'un gerekli olduğunu doğru olarak belirler, ancak CXXFLAGS'a eklemez. Makro kaynağına baktım ve aslında denetler ancak önceki bayrakları geri yükler.C++ 11 için otomatik kontroller kontrol edin

C++ 11 kaynağını derleyebilmek için CXXFLAGS setini almak için ne yapmalıyım?

-std=c++0x ürününü AM_CXXFLAGS'a eklemek hoş bir çözüm değildir çünkü derleyici derlemesini C++ 11 modunda autoconf geliştiricilerine derlemeyi tercih ediyorum, ben değil.

cevap

28

Aradığınız şey autoconf-archive'un bir parçası olan AX_CXX_COMPILE_STDCXX_11 olarak yapılmıştır. Çevreye (eskiden CXXFLAGS, şimdi CXX aracılığıyla) gerekli seçeneği ekleyecek ve C++ 11 desteği bulunmuyorsa hata verecek.

+0

'configure.ac:15: Hata: AC_LANG_ASSERT: C ../../lib/autoconf/lang.m4:156: Geçerli dil C++ değil AC_LANG_ASSERT m4/ax_cxx_compile_stdcxx_11 ... dan genişletilir. m4: 48: AX_CXX_COMPILE_STDCXX_11 ... configure.ac:15: üst düzey autom4te:/usr/bin/m4 çıkış durumuyla başarısız oldu: 1 aclocal: hata:/usr/bin/autom4te, çıkışla başarısız oldu status: 1 autoreconf: aclocal, çıkış durumuyla başarısız oldu: 1 ' Sadece AC_PROG_CXX' sonra koydum. Neyi yanlış yapıyorum? – KAction

+0

Uzun Yorum için özür dilerim. Biçimlemek için hiçbir yol bulamadım. “ACX_CXX_COMPILE_STDCXX_11” den hemen önce AC_LANG ([C++]) ekledim, ancak “AC_PROG_CXX” tarafından çağrıldığını varsaydım. – KAction

+1

@illusionoflife 'AC_PROG_CXX' bunu yapmamalı çünkü hem C hem de C++ kontrolleri olan komut dosyalarını ayarlamayacaktı. Çoğu autoconf kontrolleri C'ye güvenir. Yapmanız gereken en doğru şey AC_LANG'nin eklenmesidir. – hvd