2012-01-03 71 views
1

我想在我的程序的左右框中顯示當前的編譯(hg修訂版)編號。我想過使用一個「定義」 (std::string rev = REVISION;)代碼,並傳遞給G ++通過生成文件的值:等同於makefile中命令替換的窗口

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

將工作就像一個魅力,但即時通訊爲Windows開發Windows,所以我問:如何創建這樣在Windows上的行爲。

+0

如果您使用Cygwin或Mingw,您發佈的內容應該可以正常工作,但我認爲您想要的是-D不是-d。 – 2012-01-03 19:44:23

+0

@Dave當然,抱歉是一個錯字 – Valerij 2012-01-03 19:56:08

回答

2

如果您使用的是g ++,那麼您的假設大部分都是正確的,除了使用-D選項而不是-d來傳遞宏定義。另外,Make中的$(CPP)通常指C預處理器。 C++編譯器是$(CXX)

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

關於命令替換,如果你在UNIX上下的兼容層運行構建,像CygwinMinGW它應該工作的罰款。如果不是這樣,則可以避免使用命令替換,並將hg id -i的結果按照字面意思傳遞給編譯器。如下:

REVISION := $(shell hg id -i) 

... 
    $(CXX) -c main.cpp -o main.o -DREVISION=$(REVISION)