Możesz zmusić make do wydrukowania swojej predefiniowanej bazy danych zmiennych i reguł za pomocą wywołaniamake -p
Daniele Pallastrelli
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 ++.
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 ++.
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 ++.
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.
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ć.
make -p
Odpowiedzi:
CPPFLAGS
ma być dla flagi dla C P re P rocessor;CXXFLAGS
dotyczy flag dla kompilatora C ++.Domyślne reguły w make (przynajmniej na moim komputerze)
CPPFLAGS
dotyczą prawie wszystkiego,CFLAGS
są przekazywane tylko podczas kompilowania i linkowania C iCXXFLAGS
są przekazywane tylko podczas kompilowania i linkowania C ++.źródło
x
jest+
włączone jego stronie, ponieważC++FLAGS
byłoby wysadzić kompilatora. ... Mogłem przybyć na imprezę późno, ale to wciąż lepsze niż przybycie na czas na niewłaściwą imprezę.CPPFLAGS
NIE jest dla C P lus P lus, aleCXXFLAGS
jest.Domyślnie
CPPFLAGS
zostanie przekazana preprocesorowi C, natomiastCXXFLAGS
zostanie przekazana kompilatorowi C ++.Podręcznik GNU Make jest dobrym źródłem odpowiedzi na takie pytania (zobacz Zmienne niejawne ).
źródło
CPPFLAGS są przeznaczone dla preprocesora C, a CXXFLAGS dla kompilatora C ++.
Zobacz tutaj .
źródło
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.
źródło