2013-02-28 48 views
2

我正在使用CMake來執行我的項目的非核心/源代碼構建,並且希望包含「git describe --tags - -dirty「作爲項目中的版本號(僅供參考)。但是,任何試圖告訴git代碼回購的地方的嘗試都會導致類似「致命的錯誤:不是git存儲庫(或任何父目錄):.git」。在當前目錄之外獲取GIT構建散列

有沒有一種方法可以指定git應該在當前工作目錄以外的位置查找回購站?

回答

2

或者你也可以從CMake的使用WORKING_DIRECTORY -argument到execute_process()。這是我做的:

execute_process(COMMAND "${GIT_EXECUTABLE}" describe --tags --dirty 
    WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" 
    RESULT_VARIABLE res 
    OUTPUT_VARIABLE out 
    ERROR_QUIET 
    OUTPUT_STRIP_TRAILING_WHITESPACE) 

然後我有在${out}版本。

5

您可以使用git--git-dir -agument。

3

你可以在命令行上指定--git-dir,或者在環境中設置GIT_DIR,或者路徑寫入名爲.git文件:echo gitdir: /path/to/.git > .git或作出的軟鏈接回購:ln -s /path/to/.git

(最後兩個選項可能是最不可取的,並只提到完整性。)