Sie können veranlassen, seine vordefinierte Variablen- und make -p
Regeldatenbank
Antworten:
210
CPPFLAGSsoll für Flaggen für den C P re P ressor sein; CXXFLAGSist für Flags für den C ++ - Compiler.
Die Standardregeln in make (auf meinem Computer jedenfalls) werden CPPFLAGSan fast alles übergeben, CFLAGSnur beim Kompilieren und Verknüpfen von C und CXXFLAGSnur beim Kompilieren und Verknüpfen von C ++.
Es scheint eine gängige Praxis zu sein, dass CFLAGS auch beim Kompilieren von C ++ übergeben wird.
Baiyan Huang
21
Ha. Ich verstehe es! Das xist ein +auf die Seite gedreht, weil C++FLAGSder Compiler in die Luft jagen würde. ... Ich bin vielleicht spät zur Party gekommen, aber das ist immer noch besser, als pünktlich zur falschen Party zu kommen.
Jacksonkr
@BaiyanHuang Ich würde es nicht als üblich betrachten oder nicht; Sie werden auf beide Konventionen stoßen. Sie müssen wissen, was Ihr aktuelles Setup tut.
James Moore
1
CPPFLAGSist NICHT für C P lus P lus aber CXXFLAGS ist.
Shizhen
Richtig, aber schrecklich. Das fühlt sich an, als wären wir in den 80ern festgefahren.
Shuhalo
34
Standardmäßig CPPFLAGSwird es dem C-Präprozessor übergeben, während CXXFLAGSes dem C ++ - Compiler übergeben wird.
Ich starrte direkt auf das Handbuch, als ich genau die gleiche Frage hatte. Ich habe CPPFLAGS in stackoverflow eingegeben und die Antwort viel schneller erhalten als im Handbuch zu suchen.
Dan Hook
18
CPPFLAGS sind für den C-Präprozessor, während CXXFLAGS für den C ++ - Compiler sind.
In der Praxis müssen Sie wissen, was jedes einzelne Projekt tut. Praktisch niemand verwendet diese in make integrierten Standardeinstellungen. Wenn Sie sich beispielsweise auf CPPFLAGS verlassen, das "Flags für den C-Präprozessor" bedeutet, werden Sie feststellen, dass das Projekt, das Sie interessiert, "Flags für den C ++ - Compiler" bedeutet. stattdessen. Und wird das CFLAGS-Flag an C ++ - Kompilierungszeilen übergeben? Manchmal. Nicht immer. Usw. usw.
Einige Projekte verwenden CPPFLAGS, um "c ++ - Flags" zu bedeuten, aber diese Projekte tun dies fast definitiv aus Unkenntnis des Standards, und es wäre besser, wenn sie CXXFLAGS verwenden würden.
Score_Under
@Score_Under Ich bin nicht anderer Meinung als Sie, aber die Welt ist voller Projekte, denen es egal ist, was jemand für den Standard hält. Sie müssen immer nachforschen.
make -p
Antworten:
CPPFLAGS
soll für Flaggen für den C P re P ressor sein;CXXFLAGS
ist für Flags für den C ++ - Compiler.Die Standardregeln in make (auf meinem Computer jedenfalls) werden
CPPFLAGS
an fast alles übergeben,CFLAGS
nur beim Kompilieren und Verknüpfen von C undCXXFLAGS
nur beim Kompilieren und Verknüpfen von C ++.quelle
x
ist ein+
auf die Seite gedreht, weilC++FLAGS
der Compiler in die Luft jagen würde. ... Ich bin vielleicht spät zur Party gekommen, aber das ist immer noch besser, als pünktlich zur falschen Party zu kommen.CPPFLAGS
ist NICHT für C P lus P lus aberCXXFLAGS
ist.Standardmäßig
CPPFLAGS
wird es dem C-Präprozessor übergeben, währendCXXFLAGS
es dem C ++ - Compiler übergeben wird.Das GNU Make Manual ist eine gute Quelle für Fragen wie diese (siehe Implizite Variablen ).
quelle
CPPFLAGS sind für den C-Präprozessor, während CXXFLAGS für den C ++ - Compiler sind.
Siehe hier .
quelle
Standardmäßig sind sie auf etwas eingestellt.
In der Praxis müssen Sie wissen, was jedes einzelne Projekt tut. Praktisch niemand verwendet diese in make integrierten Standardeinstellungen. Wenn Sie sich beispielsweise auf CPPFLAGS verlassen, das "Flags für den C-Präprozessor" bedeutet, werden Sie feststellen, dass das Projekt, das Sie interessiert, "Flags für den C ++ - Compiler" bedeutet. stattdessen. Und wird das CFLAGS-Flag an C ++ - Kompilierungszeilen übergeben? Manchmal. Nicht immer. Usw. usw.
quelle