使用 EXTRA_OECMAKE 对 bitbake 配方中的 cmake 变量没有任何影响

问题描述 投票:0回答:0

我想在 yocto 图像中添加我的应用程序,我使用了这个配方:

DESCRIPTION = "my application" 
SECTION = "examples" 
LICENSE = "CLOSED" 
PR = "r0" 

DEPENDS += "opencv"

SRC_URI = "git://address/to/myApplication.git;protocol=https;tag=v0.1"

inherit pkgconfig cmake

运行 bitbake my-application 后,我遇到了这个错误:

fatal error: string: No such file or directory #include <string>

我在网上搜索了一下,我发现我需要在我的食谱中将这个变量传递给我的CMake:

EXTRA_OECMAKE += "-DCMAKE_NO_SYSTEM_FROM_IMPORTED=ON"

但什么都没有改变。我再次遇到错误。然后我决定将变量添加到我的 CMake:

set(CMAKE_NO_SYSTEM_FROM_IMPORTED ON)

在我下一次尝试之后,一切都很好,我没有遇到任何错误。

我打开 cmake.bbclass 文件,我在 cmake_do_configure() 函数中看到了这些行:

cmake \
      ${OECMAKE_GENERATOR_ARGS} \
      $oecmake_sitefile \
      ${OECMAKE_SOURCEPATH} \
      -DCMAKE_INSTALL_PREFIX:PATH=${prefix} \
      -DCMAKE_INSTALL_BINDIR:PATH=${@os.path.relpath(d.getVar('bindir'), d.getVar('prefix') + '/')} \
      -DCMAKE_INSTALL_SBINDIR:PATH=${@os.path.relpath(d.getVar('sbindir'), d.getVar('prefix') + '/')} \
      -DCMAKE_INSTALL_LIBEXECDIR:PATH=${@os.path.relpath(d.getVar('libexecdir'), d.getVar('prefix') + '/')} \
      -DCMAKE_INSTALL_SYSCONFDIR:PATH=${sysconfdir} \
      -DCMAKE_INSTALL_SHAREDSTATEDIR:PATH=${@os.path.relpath(d.getVar('sharedstatedir'), d.  getVar('prefix') + '/')} \
      -DCMAKE_INSTALL_LOCALSTATEDIR:PATH=${localstatedir} \
      -DCMAKE_INSTALL_LIBDIR:PATH=${@os.path.relpath(d.getVar('libdir'), d.getVar('prefix') + '/')} \
      -DCMAKE_INSTALL_INCLUDEDIR:PATH=${@os.path.relpath(d.getVar('includedir'), d.getVar('prefix') + '/')} \
      -DCMAKE_INSTALL_DATAROOTDIR:PATH=${@os.path.relpath(d.getVar('datadir'), d.getVar('prefix') + '/')} \
      -DCMAKE_INSTALL_SO_NO_EXE=0 \
      -DCMAKE_TOOLCHAIN_FILE=${WORKDIR}/toolchain.cmake \
      -DCMAKE_NO_SYSTEM_FROM_IMPORTED=1 \
      ${EXTRA_OECMAKE} \
      -Wno-dev

默认情况下 CMAKE_NO_SYSTEM_FROM_IMPORTED 设置为 1。因此,从逻辑上讲,我不需要在我的食谱或 cmake 中设置此变量。

为什么 EXTRA_OECMAKE 和 CMake cmake_do_configure() 不能正常工作?

我检查了我的 cmake,我确定我没有更改其中的任何 CXX 标志。

cmake yocto bitbake
© www.soinside.com 2019 - 2024. All rights reserved.