2015-12-11 48 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可执行文件,但它无法在许多系统上工作。所以它不可移植且容易出错。