2010-03-13 3 views
11

메이크 파일에 대해 배우기 시작했습니다. 출력을 보면 다음과 같은 항목이 많이 있습니다.메이크 파일에서 -DHAVE_CONFIG_H의 의미

g++ -DHAVE_CONFIG_H -I ... 

무엇이 정확히 -DHAVE_CONFIG_H입니까? 이 컴파일 옵션의 기능은 무엇입니까?

답변

20

모두 -DHAVE_CONFIG_H은 정확히 각 소스 파일의 시작 부분에 #define HAVE_CONFIG_H이있는 것처럼 정확하게 사전 프로세서 토큰 HAVE_CONFIG_H을 정의하는 것입니다.

무엇을 사용했는지에 관해서는 나머지 소스 파일 (물론 포함 된 모든 파일)에 따라 달라집니다. 그것이 그 효과를 내기 위해 당신이 찾고 있어야하는 곳입니다.

그것은 것처럼 헤더 파일 config.h 당신은 아마 소스 파일 어딘가에 다음과 같은 순서를 찾을 수있는 경우에 사용할 수 있으며 포함되어야한다는 의미 같습니다

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

을하는 것입니다 사용 가능한 경우 헤더 파일을 포함하십시오. 그러나 그것은 내 생각에 정확히 어떤 영향을 미치지 않습니다. 정확히 은 전처리 기 기호를 사용합니다.

+0

그러나 방법, "DEFS"는 Makefile에서 무엇을 의미합니까? 감사합니다 – flow

+0

@Werner, 컨텍스트에 따라 다릅니다. "DEFS = -c -O2"인 경우 나중에 사용할 수있는 대체 코드를 정의한 것입니다. 예를 들어 "gcc $ (DEFS) blah blah"는 "gcc -c -O2 blah blah"가됩니다. – paxdiablo