0

我有我的好食谱,可以从 git 存储库中获取 master。我已经按照本指南配置了我的源代码和 cmake:http: //brianmilco.blogspot.it/2012/11/cmake-automatically-use-git-tags-as.html

目标是打印当前构建的 git 哈希。

如果我在我的电脑上编译它一切正常,但是当我交叉编译时,我在变量中有 GIT-NOTFOUND。

你知道一种解决方法/一种bitbake方式吗?

更新:在我的计算机上进行编译的地方,如果我执行相同的命令,git status 在 bitbake 结帐目录上说“没有提交”:

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

我认为问题可能在于它处于分离模式?

4

2 回答 2

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 可执行文件的好地方,但它不能在许多系统上运行。所以它不便携且容易出错。

于 2015-12-12T07:50:30.433 回答
0

cmake.bbclass does out-of-tree builds by default, so there's a fairly good chance that your git invocation is running in WORKDIR/build and not the git clone. You can verify this by printing the current working directory before running git, and if that is the problem then you'll have to cd to the source tree before running git.

Note that this isn't a cross-compilation-specific issue, out-of-tree builds are recommended for reliability in general.

于 2015-12-11T11:30:47.797 回答