GNU'da CPPFLAGS ve CXXFLAGS arasındaki fark


Yanıtlar:


210

CPPFLAGSC P re P işlemcisi için bayraklar için olması gerekiyordu ; CXXFLAGSC ++ derleyicisinin bayrakları içindir.

Make (makinemde, herhangi bir hızda) varsayılan kuralları CPPFLAGShemen hemen her şeye geçer , sadece CFLAGSC derlenirken ve bağlanırken CXXFLAGSgeçirilir ve sadece C ++ derlenirken ve bağlanırken geçirilir.


1
C ++ derlendiğinde CFLAGS'ın da geçeceği yaygın bir uygulama gibi görünüyor?
Baiyan Huang

21
Ha. Anladım! xBir olduğu +, çünkü 's tarafında açık C++FLAGSderleyici patlatmak istiyorum. ... partiye geç gelmiş olabilirim, ama yine de yanlış partiye zamanında varmaktan daha iyi.
Mart'ta Jacksonkr

@BaiyanHuang Ben yaygın ya da değil olarak düşünmek olmaz; her iki sözleşmeye de gireceksiniz. Mevcut kurulumunuzun ne yaptığını bilmek zorundasınız.
James Moore

1
CPPFLAGSolduğu dEĞİL için C P lus P LU'lar ama CXXFLAGS olduğunu.
shizhen

Doğru ama korkunç. Bu 80'lerde sıkışıp kalmış gibi hissediyorum.
shuhalo

34

Varsayılan CPPFLAGSolarak, C ön işlemcisine, CXXFLAGSC ++ derleyicisine verilecektir.

GNU Manuel olun bu gibi sorulara (bkz için iyi bir kaynaktır Örtülü Değişkenler ).


27
Bu aynı soruyu sorduğumda kılavuza bakıyordum. Yığın akışı içine CPPFLAGS yazdım ve cevabı kılavuzda aramaktan çok daha hızlı aldım.
Dan Hook


0

Varsayılan olarak, bir şeye ayarlıdırlar.

Uygulamada, her bir projenin ne yaptığını bilmeniz gerekir. Neredeyse hiç kimse bu varsayılanları yapmak için kullanmaz ve örneğin, "C önişlemcisine bayraklar" anlamına gelen CPPFLAGS'a güvenirseniz, önem verdiğiniz projenin "C ++ derleyicisine bayraklar" anlamına geldiğini görürsünüz. yerine. Ve CFLAGS bayrağı C ++ derleme satırlarına geçiriliyor mu? Ara sıra. Her zaman değil. Vb, vb.


1
Bazı projeler CPPFLAGS'ı "c ++ bayrakları" anlamına gelir, ancak bu projeler neredeyse kesinlikle standardı bilmeden yapıyor ve CXXFLAGS kullanmaları daha iyi olurdu.
18'de

@Score_Under Size katılmıyorum, ancak dünya, standardın kim olduğunu düşündüğünü daha az umursamayan projelerle dolu. Her zaman araştırmalısınız.
James Moore
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.