Вы можете заставить make распечатать свои предопределенные переменные и базу данных правил, используя вызовmake -p
Даниэле Палластрелли
Ответы:
211
CPPFLAGSПредполагается, что для флагов для C P повторно P rocessor; CXXFLAGSпредназначен для флагов компилятора C ++.
Правила по умолчанию в make (на моей машине, во всяком случае) передаются CPPFLAGSпрактически всему, CFLAGSпередаются только при компиляции и компоновке C и CXXFLAGSпередаются только при компиляции и компоновке C ++.
кажется, это обычная практика, когда CFLAGS также передается при компиляции C ++?
Байянь Хуанг
21
Ха. Я понял! xэто +оказалось на его стороне , потому что C++FLAGSвзорвут компилятор. ... Возможно, я опоздал на вечеринку, но это все равно лучше, чем прийти вовремя не на ту вечеринку.
Jacksonkr
@BaiyanHuang Я бы не стал думать об этом как о распространенном или нет; вы столкнетесь с обоими соглашениями. Вы должны знать, что делает ваша текущая установка.
Джеймс Мур
1
CPPFLAGSэто НЕ для C P Lus P СЗП , но CXXFLAGS есть.
shizhen
Верно, но ужасно. Такое ощущение, что мы застряли в 80-х.
шухало
34
По умолчанию CPPFLAGSпередается препроцессору C, а CXXFLAGSпередается компилятору C ++.
Я смотрел прямо в руководство, когда у меня возник точно такой же вопрос. Я ввел CPPFLAGS в stackoverflow и получил ответ намного быстрее, чем поиск по руководству.
Дэн Хук,
18
CPPFLAGS предназначены для препроцессора C, а CXXFLAGS - для компилятора C ++.
На практике вам нужно знать, что делает каждый отдельный проект. Практически никто не использует эти значения по умолчанию, встроенные в make, и если вы полагаетесь, например, на CPPFLAGS, означающее «флаги препроцессора C», вы обнаружите, что проект, который вам нужен, использовал его как «флаги для компилятора C ++». вместо. И передается ли флаг CFLAGS строкам компиляции C ++? Иногда. Не всегда. И т. Д. И т. Д. И т. Д.
В некоторых проектах CPPFLAGS используется для обозначения «флагов c ++», но эти проекты почти наверняка делают это из-за незнания стандарта, и было бы лучше, если бы они использовали CXXFLAGS.
Score_Under
@Score_Under Я не не согласен с вами, но мир наполнен проектами, которым все равно, что кто-то думает о стандарте. Вы всегда должны расследовать.
make -p
Ответы:
CPPFLAGS
Предполагается, что для флагов для C P повторно P rocessor;CXXFLAGS
предназначен для флагов компилятора C ++.Правила по умолчанию в make (на моей машине, во всяком случае) передаются
CPPFLAGS
практически всему,CFLAGS
передаются только при компиляции и компоновке C иCXXFLAGS
передаются только при компиляции и компоновке C ++.источник
x
это+
оказалось на его стороне , потому чтоC++FLAGS
взорвут компилятор. ... Возможно, я опоздал на вечеринку, но это все равно лучше, чем прийти вовремя не на ту вечеринку.CPPFLAGS
это НЕ для C P Lus P СЗП , ноCXXFLAGS
есть.По умолчанию
CPPFLAGS
передается препроцессору C, аCXXFLAGS
передается компилятору C ++.Руководство GNU Make Manual - хороший ресурс для ответов на подобные вопросы (см. Неявные переменные ).
источник
CPPFLAGS предназначены для препроцессора C, а CXXFLAGS - для компилятора C ++.
Смотрите здесь .
источник
По умолчанию они на что-то настроены.
На практике вам нужно знать, что делает каждый отдельный проект. Практически никто не использует эти значения по умолчанию, встроенные в make, и если вы полагаетесь, например, на CPPFLAGS, означающее «флаги препроцессора C», вы обнаружите, что проект, который вам нужен, использовал его как «флаги для компилятора C ++». вместо. И передается ли флаг CFLAGS строкам компиляции C ++? Иногда. Не всегда. И т. Д. И т. Д. И т. Д.
источник