Anda bisa mendapatkan untuk mencetak variabel yang telah ditentukan dan database aturan menggunakan doamake -p
Daniele Pallastrelli
Jawaban:
210
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 ++.
sepertinya praktik umum bahwa CFLAGS juga akan diteruskan ketika mengkompilasi C ++?
Baiyan Huang
21
Ha. Saya mengerti! yang 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.
Jacksonkr
@ BaiyanHuang Saya tidak akan menganggapnya biasa atau tidak; Anda akan mengalami kedua konvensi. Anda harus tahu apa yang sedang dilakukan pengaturan Anda saat ini.
James Moore
1
CPPFLAGSadalah TIDAK untuk C P lus P lus tapi CXXFLAGS adalah.
shizhen
Benar tapi mengerikan. Ini terasa seperti kita terjebak di tahun 80-an.
shuhalo
34
Secara default, CPPFLAGSakan diberikan ke preproses C, sementara CXXFLAGSakan diberikan ke kompiler C ++.
Saya sedang menatap manual ketika saya memiliki pertanyaan yang sama persis ini. Saya mengetik CPPFLAGS ke stackoverflow dan mendapatkan jawabannya jauh lebih cepat daripada mencari manual.
Dan Hook
18
CPPFLAGS adalah untuk preprocessor C, sedangkan CXXFLAGS adalah untuk kompiler C ++.
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.
Beberapa proyek menggunakan CPPFLAGS berarti "c ++ flags", tetapi proyek-proyek itu hampir pasti melakukannya karena ketidaktahuan standar, dan akan lebih baik jika mereka menggunakan CXXFLAGS.
Score_Di Bawah
@Score_Di bawah Saya tidak setuju dengan Anda, tetapi dunia dipenuhi dengan proyek yang tidak peduli apa yang orang pikirkan tentang standar itu. Anda selalu harus menyelidikinya.
make -p
Jawaban:
CPPFLAGS
seharusnya untuk bendera untuk penilai C P re P ;CXXFLAGS
adalah untuk flag untuk kompiler C ++.Aturan default dalam make (pada mesin saya, bagaimanapun) melewati
CPPFLAGS
semua saja,CFLAGS
hanya diteruskan ketika mengkompilasi dan menghubungkan C, danCXXFLAGS
hanya diteruskan ketika mengkompilasi dan menghubungkan C ++.sumber
x
merupakan+
dihidupkan sisi itu karenaC++FLAGS
akan meledakkan compiler. ... Aku mungkin terlambat datang ke pesta, tapi itu masih lebih baik daripada tiba tepat waktu ke pesta yang salah.CPPFLAGS
adalah TIDAK untuk C P lus P lus tapiCXXFLAGS
adalah.Secara default,
CPPFLAGS
akan diberikan ke preproses C, sementaraCXXFLAGS
akan diberikan ke kompiler C ++.Manual Pembuatan GNU adalah sumber yang bagus untuk pertanyaan seperti ini (lihat Variabel Implisit ).
sumber
CPPFLAGS adalah untuk preprocessor C, sedangkan CXXFLAGS adalah untuk kompiler C ++.
Lihat di sini .
sumber
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.
sumber