Jawaban:
CPPFLAGSseharusnya untuk bendera untuk penilai C P re P ; CXXFLAGSadalah untuk flag untuk kompiler C ++.
Aturan default dalam make (pada mesin saya, bagaimanapun) melewati CPPFLAGSsemua saja, CFLAGShanya diteruskan ketika mengkompilasi dan menghubungkan C, dan CXXFLAGShanya diteruskan ketika mengkompilasi dan menghubungkan C ++.
xmerupakan +dihidupkan sisi itu karena C++FLAGSakan meledakkan compiler. ... Aku mungkin terlambat datang ke pesta, tapi itu masih lebih baik daripada tiba tepat waktu ke pesta yang salah.
CPPFLAGSadalah TIDAK untuk C P lus P lus tapi CXXFLAGS adalah.
Secara default, CPPFLAGSakan diberikan ke preproses C, sementara CXXFLAGSakan diberikan ke kompiler C ++.
Manual Pembuatan GNU adalah sumber yang bagus untuk pertanyaan seperti ini (lihat Variabel Implisit ).
Secara default, mereka diatur ke sesuatu.
Dalam praktiknya, Anda perlu tahu apa yang dilakukan setiap proyek. Hampir tidak ada yang menggunakan default yang dibangun pada make, dan jika Anda mengandalkan, misalnya, CPPFLAGS yang berarti "flags to the preprocessor C" Anda akan menemukan bahwa proyek yang Anda pedulikan telah menggunakannya untuk berarti "flags to the C ++ compiler" sebagai gantinya. Dan apakah flag CFLAGS diteruskan ke jalur kompilasi C ++? Terkadang. Tidak selalu. Dll, dll. Dll.
make -p