【问题标题】:Bitbake git version and cmakeBitbake git 版本和 cmake
【发布时间】:2016-03-17 05:16:13
【问题描述】:

我有一个不错的食谱,可以从 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

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

【问题讨论】:

  • 未找到 Git。我不知道这与交叉编译有什么关系,因为它应该是无关的。这是一个纯粹的 CMake/Git 问题,所有其他标签都不相关。
  • 看起来你的交叉编译中使用的工具链文件阻止了find_package(Git)通过find_program搜索git可执行文件。例如,它将变量 CMAKE_FIND_ROOT_PATH_MODE_PROGRAM 设置为 ONLY。
  • "git-describe --tags" 即使在分离时也应该工作......

标签: git cmake version bitbake openembedded


【解决方案1】:

cmake.bbclass 默认情况下会进行树外构建,因此您的 git 调用很有可能在 WORKDIR/build 而不是 git clone 中运行。您可以通过在运行 git 之前打印当前工作目录来验证这一点,如果这是问题所在,那么您必须在运行 git 之前 cd 到源代码树。

请注意,这不是特定于交叉编译的问题,一般而言,建议使用树外构建以提高可靠性。

【讨论】:

  • 我总是在树外构建,不,我认为问题不存在,我认为这更依赖于这样一个事实,即如果我 cd 进入 bitbaked 源目录并执行 git我发现状态:git status HEAD 在 f47fc96 分离,没有提交,工作目录干净所以......它处于分离模式,而如果我直接尝试,它表明我已经提交了所有内容。
【解决方案2】:

我做了一些测试,在阅读了所有消息后,我使用了一个至少可以工作的 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 可执行文件的好地方,但它无法在许多系统上运行。所以它不便携且容易出错。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-14
    • 2013-10-18
    • 2014-08-25
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多