2015-12-11 87 views
0

我有我的不錯的配方,從git倉庫獲取主人。 我已經配置了我的源和cmake,如本指南所示:http://brianmilco.blogspot.it/2012/11/cmake-automatically-use-git-tags-as.htmlBitbake git版本和cmake

目標是打印當前版本的git散列。

如果我編譯它在我的電腦一切正常,但是當我交叉編譯我在可變GIT-NOTFOUND。

你知道一種解決方法/ bitbake的一個方式做呢?

UPDATE: 在那裏我做編譯在我的電腦git的狀態顯示爲「沒有承諾」 在bitbake的檢出目錄,如果我做同樣的命令,它說:

git status 
HEAD detached at f47fc96 
nothing to commit, working directory clean 

我覺得現在的問題可能是它處於分離模式的事實?

+0

找不到Git。我不知道這是如何與交叉編譯相關的,因爲它應該是不相關的。這是一個純粹的CMake/Git問題,所有其他標籤都不相關。 – usr1234567

+1

它看起來像是用於交叉編譯的工具鏈文件,可以防止'find_package(Git)'通過'find_program'搜索git可執行文件。例如,它僅將變量[CMAKE_FIND_ROOT_PATH_MODE_PROGRAM](https://cmake.org/cmake/help/v3.0/variable/CMAKE_FIND_ROOT_PATH_MODE_PROGRAM.html)設置爲。 – Tsyvarev

+0

「混帳形容--tags」沾邊的時候甚至應該工作... – jku

回答

0

cmake.bbclass在默認情況下會執行out-of-tree構建,因此您的git調用運行在WORKDIR/build中而不是git克隆上的可能性相當大。你可以通過在運行git之前打印當前工作目錄來驗證,如果這是問題,那麼在運行git之前,你必須cd到源代碼樹。

請注意,這不是一個交叉編譯特有的問題,亂樹建立推薦用於一般的可靠性。

+0

我總是做出來的樹的構建,不,我不認爲這個問題是存在的,我覺得它更依賴於這樣的事實,如果我的CD進入bitbaked源代碼目錄和我做了git的狀態,我覺得:git的狀態 主管f47fc96 沒有分開提交,工作目錄乾淨 所以...它是在分離模式,而如果我嘗試將其直接指出我的一切承諾。 – andyinno

0

我做了一些測試,並閱讀所有的消息後,我出去了VBH至少工作。如果有人會在未來找到相同的情況,我會把它放在這裏。

我不知道到底哪裏出了問題的來源,但... bitbake的時正在執行的配方不能找到git的可執行文件(可能是因爲它不使用一個安裝在PC上,但由於路徑被改變。 解決方法是添加:

if (NOT GIT_FOUND) 
    set(GIT_EXECUTABLE "/usr/bin/git") 
    set(GIT_FOUND true) 
endif() 

if(NOT GIT_FOUND) 
    find_package(Git QUIET) 
endif() 

的問題是,在這樣的路徑是硬編碼,所以它不是便攜式現在......我認爲這是一個不錯的地方在哪裏找到一個git可執行文件,但它無法在許多系統上工作。所以它不可移植且容易出錯。