Różnica między CPPFLAGS i CXXFLAGS w GNU Make


Odpowiedzi:


210

CPPFLAGSma być dla flagi dla C P re P rocessor; CXXFLAGSdotyczy flag dla kompilatora C ++.

Domyślne reguły w make (przynajmniej na moim komputerze) CPPFLAGSdotyczą prawie wszystkiego, CFLAGSsą przekazywane tylko podczas kompilowania i linkowania C i CXXFLAGSsą przekazywane tylko podczas kompilowania i linkowania C ++.


1
wydaje się, że powszechną praktyką jest przekazywanie CFLAGS również podczas kompilacji C ++?
Baiyan Huang

21
Ha. Rozumiem! xjest +włączone jego stronie, ponieważ C++FLAGSbyłoby wysadzić kompilatora. ... Mogłem przybyć na imprezę późno, ale to wciąż lepsze niż przybycie na czas na niewłaściwą imprezę.
Jacksonkr

@BaiyanHuang Nie myślałbym o tym tak często, czy nie; napotkasz obie konwencje. Musisz wiedzieć, co robi Twoja obecna konfiguracja.
James Moore

1
CPPFLAGSNIE jest dla C P lus P lus, ale CXXFLAGS jest.
shizhen

Prawda, ale straszna. Wydaje się, że utknęliśmy w latach 80.
shuhalo

34

Domyślnie CPPFLAGSzostanie przekazana preprocesorowi C, natomiast CXXFLAGSzostanie przekazana kompilatorowi C ++.

Podręcznik GNU Make jest dobrym źródłem odpowiedzi na takie pytania (zobacz Zmienne niejawne ).


27
Patrzyłem prosto w instrukcję, kiedy miałem dokładnie to samo pytanie. Wpisałem CPPFLAGS do stackoverflow i otrzymałem odpowiedź znacznie szybciej niż przeszukiwanie instrukcji.
Dan Hook

18

CPPFLAGS są przeznaczone dla preprocesora C, a CXXFLAGS dla kompilatora C ++.

Zobacz tutaj .


0

Domyślnie są na coś ustawione.

W praktyce musisz wiedzieć, czym zajmuje się każdy projekt. Praktycznie nikt nie używa tych domyślnych wartości wbudowanych w make, a jeśli na przykład polegasz na CPPFLAGS oznaczającym „flagi dla preprocesora C”, zobaczysz, że projekt, na którym Ci zależy, użył go do oznaczenia „flag dla kompilatora C ++” zamiast. I czy flaga CFLAGS jest przekazywana do wierszy kompilacji C ++? Czasami. Nie zawsze. Itp. Itp.


1
Niektóre projekty używają CPPFLAGS w znaczeniu „flagi c ++”, ale te projekty prawie na pewno robią to z powodu nieznajomości standardu i byłoby lepiej, gdyby używały CXXFLAGS.
Score_Under

@Score_Under Nie zgadzam się z tobą, ale świat jest pełen projektów, które nie mogą się mniej przejmować tym, co według innych jest standardem. Ty zawsze trzeba zbadać.
James Moore
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.