2012-01-03 4 views
1

내 프로그램의 about 상자에 현재 빌드 (hg 리비전) 번호를 표시하려고합니다. 어떻게 이러한 생성 : 그래서 내 Q를메이크 파일에서 명령 대체에 해당하는 windows

$(CPP) -c main.cpp -o main.o -DREVISION=`hg id -i` 

이 매력처럼 작동,하지만 메신저 창에 창문에서 개발 : 나는이 코드에서 (std::string rev = REVISION;) "정의"와 g ++ 메이크를 통해 할 수있는 값을 전달 사용에 대한 생각 창에서의 행동.

+0

Cygwin 또는 Mingw를 사용하는 경우 -D는 -d를 원하지 만 게시 한 내용은 올바르게 작동합니다. –

+0

@Dave 물론, 미안하지만 오타가되었습니다. – Valerij

답변

2

매크로 정의를 전달하는 것이 -d이 아니라 -D 옵션을 사용하여 수행된다는 것을 제외하면 g ++를 사용하는 경우 대부분 가정합니다. 또한 Make의 $(CPP)은 대개 C 전 처리기를 나타냅니다. C++ 컴파일러는 $(CXX)입니다. 당신이 Cygwin 또는 MinGW처럼, UNIX 틱 호환성 계층에 빌드를 실행하면 명령 치환에 관한

$(CXX) -c main.cpp -o main.o -DREVISION=`hg id -i` 

, 그것을 잘 작동합니다. 그렇지 않다면 명령어 대체를 전혀 사용하지 말고 hg id -i의 결과를 그대로 컴파일러에 전달할 수 있습니다.

REVISION := $(shell hg id -i) 

... 
    $(CXX) -c main.cpp -o main.o -DREVISION=$(REVISION) 
관련 문제