2012-11-30 53 views
1

可能重複:
How to include header file through makefile有沒有辦法自動在所有C或CPP文件中包含頭文件?

我用gcc編譯我的代碼。我也有幾個make文件。我可以告訴編譯器將一個特定的頭文件包含在所有CPP文件中。

我該怎麼做?

+3

把它們放在一個名爲'feature_support.h'的頭文件中,並且將它包含在每個需要它的文件中,這使得它更有意義。 – chris

+0

@chris:我已經在大型代碼庫中看到了這個過程的自動化。但不能記住它是如何完成的...... :) – NeonGlow

+0

如果你在每個文件中都需要它,那麼你的設計可能有問題。 –

回答

10

添加gcc適當preprocessor optionMakefile -s和有定義這些一個common_feature_header.h頭文件。

# in Makefile 
CPPFLAGS+= -include common_feature_header.h 

如果你只是想定義一些預處理標誌,你並不需要一個common_feature_header.h文件,但只需添加到您的Makefile如下定義

CPPFLAGS+= -DSOME_FEATURE_FLAG=1 -DSOME_OTHERFEATURE_FLAG=0 \ 
      -DYET_ANOTHER_THING=2 

參見this answer

P.S.您可能需要使用remake(特別是其-x選項)來調試您的Makefile

+0

謝謝...我是新來製作文件。所以我會感激一點幫助理解這一點。從你所說的,我知道我需要在make文件中的頭文件中定義每個變量,比如說我在common_feature_header.h中有10個#defines,我需要在make文件中有相應的10個條目。那是對的嗎? [對不起,想問一個可能愚蠢的問題] – NeonGlow

+0

不,你可以在'Makefile'中的同一個'CPPFLAGS ='...設置上有'-Dxxx'選項。 –

1

直接在makefile文件中,您可以執行-DFEATURE1_SUPPORTED=1,以使其在所有使用CPP的CPP上生效。

參考SO問題:Is it possible to define a C macro in a makefile?

+0

謝謝。從我明白的鏈接中,我需要添加CFLAGS = -D FEATURE1_SUPPORTED = 1。是嗎? – NeonGlow

相關問題