2010-03-13 14 views
11

Makefile hakkında bilgi almaya başlıyorum.Makefile'de -DHAVE_CONFIG_H anlamı

tam -DHAVE_CONFIG_H nedir
g++ -DHAVE_CONFIG_H -I ... 

: çıkışında baktığımızda ben gerçekleşme çok görüyor musunuz? Bu derleme seçeneğinin işlevi nedir?

cevap

20

Tüm bu -DHAVE_CONFIG_H, HAVE_CONFIG_H ön işlem belirtecini tam olarak, kaynak dosyalarınızın her birinin başında #define HAVE_CONFIG_H olduğu gibi tanımlamaktır.

Ne için kullanıldığına bağlı olarak, bu tamamen kaynak dosyanızın geri kalanına bağlıdır (ve içerdiği her şey). Etkisini bulmak için aramanız gereken yer burası.

O gibi bir başlık dosyası config.h muhtemelen kaynak dosyaları bir yere aşağıdaki diziyi bulacaksınız bu durumda, mevcuttur ve dahil edilmelidir anlamına gelebilir görünür:

#ifdef HAVE_CONFIG_H 
    #include "config.h" 
#endif 

hangi edecek Uygun olduğunu söylediğinizde başlık dosyasını ekleyin. Ancak bu, benim tarafımdaki varsayım ve hiçbir şekilde tam etki değil, sadece I böyle bir önişlemci sembolünü kullanacaktı.

+0

Ancak yol, "DEFS" bir Makefile'de ne anlama geliyor? teşekkürler – flow

+0

@Werner, içeriğe bağlıdır. Eğer "DEFS = -c -O2" ise, bu sadece daha sonra kullanılabilecek bir ikame anlamına gelir, örneğin, "gcc $ (DEFS) blah blah", "gcc -c -02 blah blah" olur. – paxdiablo