Utilizziamo gli autotools come infrastruttura di build e usiamo clang e gcc come compilatori. Recentemente abbiamo raggiunto un avvertimento gcc che aveva bisogno diCome impostare i flag specifici del compilatore con gli autotools
--param max-vartrack-size=100000000
al silenzio (senza vartracking completey di gcc disabilitazione). Clang non accetta tale opzione e produce
argument unused during compilation: '--param max-vartrack-size=100000000'
al silenzio che, clang bisogno
-Qunused-arguments
e che genera un errore sotto gcc:
unrecognized command line option ‘-Qunused-arguments’
Qual è la modo migliore per definire i flag specifici del compilatore in
configure.ac
, dopo aver selezionato un compilatore, ad esempioAC_PROG_CXX
? AbbiamoAC_SUBST(AM_CXXFLAGS)
quindi suppongo che mi piacerebbe espandere una variabile specifica del compilatore all'interno diAM_CXXFLAGS
.Qual è il modo corretto per abilitare un'opzione per target in un
Makefile.am
per un solo compilatore? Sto pensando di:if HAVE_GCC SPECIFIC_CXXFLAGS = --param... endif if HAVE_CLANG SPECIFIC_CXXFLAGS = -Q... endif libfoo_la_CXXFLAGS = $(AM_CXXFLAGS) $(SPECIFIC_CXXFLAGS)
ma mi piacerebbe bisogno dei HAVE_*
Vars subst'ed da configure.ac. AC_PROG_CXX/CC
forse già definire qualcosa di simile?
Sono perplesso dalla tua affermazione che non si dovrebbe "AC_SUBST" 'AM_CXXFLAGS'. In che modo è diverso dall'impostare 'AM_CXXFLAGS' in tutti i 15' Makefile.am's a mano? 'AC_SUBST'ing' AM_CXXFLAGS' è la soluzione perfetta per cose come abilitare gli avvisi per l'intero progetto di default, o scegliere il vecchio ABI con gcc 5.1 (che deve essere lo stesso per tutti gli oggetti). In quale altro modo potrei ottenere ciò, a meno dell'impostazione di 'AM_CXXFLAGS' in ciascuno dei' Makefile.am's? – Irfy
Ho deciso di aggiungere due 'AM_CONDITIONAL's al mio configure.ac,' HAVE_GCC' e 'HAVE_CLANG' con il test condizionale equivalente al controllo' grep'. Grazie! – Irfy
@Irfy: ecco a cosa serve "CXXFLAGS". Puoi passare i flag specifici del compilatore a 'configure' tramite' CXXFLAGS', o aggiungere/modificare i flag 'CXXFLAGS' in' configure.ac'. Questa variabile è anche inclusa nelle regole di compilazione C++. –