Vous pouvez demander à make d'imprimer sa base de données de variables et de règles prédéfinies à l'aide de l'invocationmake -p
Daniele Pallastrelli
Réponses:
210
CPPFLAGSest censé être pour les drapeaux pour le C P re P rocessor; CXXFLAGSest pour les indicateurs pour le compilateur C ++.
Les règles par défaut de make (sur ma machine, en tout cas) passent à CPPFLAGSà peu près tout, CFLAGSne sont transmises que lors de la compilation et de la liaison de C, et CXXFLAGSne sont transmises que lors de la compilation et de la liaison de C ++.
il semble être une pratique courante que CFLAGS serait également passé lors de la compilation C ++?
Baiyan Huang
21
Ha. J'ai compris! le xest un +tourné sur son côté car cela C++FLAGSferait exploser le compilateur. ... Je suis peut-être arrivé en retard à la fête, mais c'est toujours mieux que d'arriver à l'heure au mauvais parti.
Jacksonkr
@BaiyanHuang Je ne pense pas que ça soit commun ou pas; vous rencontrerez les deux conventions. Vous devez savoir ce que fait votre configuration actuelle.
James Moore
1
CPPFLAGSn'est PAS pour C P lus P lus mais l' CXXFLAGS est.
shizhen
Vrai mais terrible. C'est comme si nous étions coincés dans les années 80.
shuhalo
34
Par défaut, CPPFLAGSsera donné au préprocesseur C, tandis que CXXFLAGSsera donné au compilateur C ++.
Je regardais directement le manuel lorsque j'ai eu exactement la même question. J'ai tapé CPPFLAGS dans stackoverflow et j'ai obtenu la réponse beaucoup plus rapidement que de chercher dans le manuel.
Dan Hook
18
CPPFLAGS sont pour le préprocesseur C, tandis que CXXFLAGS sont pour le compilateur C ++.
En pratique, vous devez savoir ce que fait chaque projet. Pratiquement personne n'utilise ces valeurs par défaut intégrées à make, et si vous vous fiez, par exemple, à CPPFLAGS signifiant «drapeaux pour le préprocesseur C», vous constaterez que le projet qui vous tient à cœur l'a utilisé pour signifier «drapeaux pour le compilateur C ++» au lieu. Et l'indicateur CFLAGS est-il passé aux lignes de compilation C ++? Quelquefois. Pas toujours. Etc, etc., etc.
Certains projets utilisent CPPFLAGS pour signifier «drapeaux c ++», mais ces projets le font presque certainement par ignorance du standard, et il serait préférable qu'ils utilisent CXXFLAGS.
Score_Under
@Score_Under Je ne suis pas en désaccord avec vous, mais le monde est rempli de projets qui se moquent de ce que quiconque pense que la norme est. Vous devez toujours enquêter.
make -p
Réponses:
CPPFLAGS
est censé être pour les drapeaux pour le C P re P rocessor;CXXFLAGS
est pour les indicateurs pour le compilateur C ++.Les règles par défaut de make (sur ma machine, en tout cas) passent à
CPPFLAGS
à peu près tout,CFLAGS
ne sont transmises que lors de la compilation et de la liaison de C, etCXXFLAGS
ne sont transmises que lors de la compilation et de la liaison de C ++.la source
x
est un+
tourné sur son côté car celaC++FLAGS
ferait exploser le compilateur. ... Je suis peut-être arrivé en retard à la fête, mais c'est toujours mieux que d'arriver à l'heure au mauvais parti.CPPFLAGS
n'est PAS pour C P lus P lus mais l'CXXFLAGS
est.Par défaut,
CPPFLAGS
sera donné au préprocesseur C, tandis queCXXFLAGS
sera donné au compilateur C ++.Le manuel GNU Make est une bonne ressource pour des questions comme celle-ci (voir Variables implicites ).
la source
CPPFLAGS sont pour le préprocesseur C, tandis que CXXFLAGS sont pour le compilateur C ++.
Regardez ici .
la source
Par défaut, ils sont définis sur quelque chose.
En pratique, vous devez savoir ce que fait chaque projet. Pratiquement personne n'utilise ces valeurs par défaut intégrées à make, et si vous vous fiez, par exemple, à CPPFLAGS signifiant «drapeaux pour le préprocesseur C», vous constaterez que le projet qui vous tient à cœur l'a utilisé pour signifier «drapeaux pour le compilateur C ++» au lieu. Et l'indicateur CFLAGS est-il passé aux lignes de compilation C ++? Quelquefois. Pas toujours. Etc, etc., etc.
la source