Differenza tra CPPFLAGS e CXXFLAGS in GNU Make


Risposte:


210

CPPFLAGSdovrebbe essere per le bandiere per il rocessor C P re P ; CXXFLAGSè per i flag per il compilatore C ++.

Le regole predefinite in make (sulla mia macchina, in ogni caso) passano CPPFLAGSpraticamente a tutto, CFLAGSvengono passate solo durante la compilazione e il collegamento C, e CXXFLAGSvengono passate solo durante la compilazione e il collegamento C ++.


1
sembra una pratica comune che anche i CFLAGS vengano passati durante la compilazione di C ++?
Baiyan Huang,

21
Ha. Capisco! il xè un +acceso suo lato perché C++FLAGSsarebbe far saltare il compilatore. ... Potrei essere arrivato alla festa tardi, ma è comunque meglio che arrivare in tempo alla festa sbagliata.
Jacksonkr

@BaiyanHuang Non ci penserei come comune o no; ti imbatterai in entrambe le convenzioni. Devi sapere cosa sta facendo la tua configurazione attuale.
James Moore,

1
CPPFLAGSnon è per C P lus P lus ma lo CXXFLAGS è.
shizhen,

Vero ma terribile. Sembra che siamo bloccati negli anni '80.
shuhalo,

34

Per impostazione predefinita, CPPFLAGSverrà assegnato al preprocessore C, mentre CXXFLAGSverrà fornito al compilatore C ++.

Il Manuale di GNU Make è una buona risorsa per domande come questa (vedi Variabili implicite ).


27
Stavo fissando il manuale quando avevo la stessa identica domanda. Ho digitato CPPFLAGS in StackOverflow e ho ottenuto la risposta molto più rapidamente rispetto alla ricerca nel manuale.
Dan Hook,

18

CPPFLAGS sono per il preprocessore C, mentre CXXFLAGS sono per il compilatore C ++.

Vedi qui .


0

Per impostazione predefinita, sono impostati su qualcosa.

In pratica, devi sapere cosa fa ogni singolo progetto. Praticamente nessuno usa quelle impostazioni predefinite integrate in make e, se si fa affidamento, ad esempio, su CPPFLAGS che significano "flag per il preprocessore C", scoprirai che il progetto che ti interessa lo ha usato per significare "flag per il compilatore C ++" anziché. E il flag CFLAGS viene passato alle righe di compilazione C ++? Qualche volta. Non sempre. Ecc, ecc, ecc.


1
Alcuni progetti usano CPPFLAGS per indicare "flag c ++", ma quei progetti lo fanno quasi sicuramente per ignoranza dello standard, e sarebbe meglio se usassero CXXFLAGS.
Score_Under

@Score_Under Non sono in disaccordo con te, ma il mondo è pieno di progetti a cui non potrebbe importare di meno di ciò che qualcuno pensa sia lo standard. Devi sempre indagare.
James Moore,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.