Різниця між CPPFLAGS і CXXFLAGS у GNU Make


Відповіді:


210

CPPFLAGSпередбачається, що для прапорщиків C P re P є прапорці; CXXFLAGSпризначений для прапорів для компілятора C ++.

Правила за замовчуванням, зроблені (на моїй машині, у будь-якому випадку), передаються CPPFLAGSмайже усьому, CFLAGSпередаються лише під час компіляції та зв’язування C та CXXFLAGSпередаються лише під час компіляції та зв’язування C ++.


1
здається загальноприйнятою практикою, що CFLAGS також передаватимуться при компіляції C ++?
Байян Хуанг

21
Ха. Я розумію! xце +виявилося на його стороні , тому що C++FLAGSпідірвуть компілятор. ... Я, можливо, прийшов на вечірку пізно, але це все-таки краще, ніж прийти вчасно до неправильної партії.
Джексонкр

@BaiyanHuang я б не вважав це загальним чи ні; Ви зіткнетесь з обома умовами. Ви повинні знати, що робить ваша поточна установка.
Джеймс Мур

1
CPPFLAGSце НЕ для C P Lus P СЗП , але CXXFLAGS є.
shizhen

Справжня, але жахлива. Це відчуває, що ми застрягли в 80-х.
шухало

34

За замовчуванням CPPFLAGSбуде надано препроцесору C, тоді як CXXFLAGSбуде надано компілятору C ++.

Посібник з виготовлення GNU - це гарний ресурс для таких питань (див. Неявні змінні ).


27
Я дивився прямо на керівництво, коли у мене було таке саме запитання. Я набрав CPPFLAGS в stackoverflow і отримав відповідь набагато швидше, ніж шукати посібник.
Dan Hook

18

CPPFLAGS - для препроцесора C, тоді як CXXFLAGS - для компілятора C ++.

Дивіться тут .


0

За замовчуванням вони встановлені на щось.

На практиці потрібно знати, що робить кожен окремий проект. Практично ніхто не використовує вбудовані параметри за замовчуванням, і якщо ви покладаєтесь, наприклад, на CPPFLAGS, що означає "прапори до препроцесора C", ви побачите, що проект, який вам цікавий, використовував його для позначення "прапори компілятору C ++" замість цього. І чи передається прапор CFLAGS до рядків компіляції C ++? Іноді. Не завжди. І т.д., і т.д., і т.д.


1
Деякі проекти використовують CPPFLAGS для позначення "c ++ прапорів", але ці проекти майже напевно роблять це через незнання стандарту, і було б краще, якби вони використовували CXXFLAGS.
Score_Under

@Score_Under Я не погоджуюся з вами, але світ наповнений проектами, які не могли би турбуватися менше, ніж хтось вважає, що це стандарт. Ви завжди повинні розслідувати.
Джеймс Мур
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.