我无法将 flatc 安装到基于 yocto 的 SDK 中

I can't get flatc installed into my yocto based SDK

我正在执行 bitbake image -c populate_sdk 来获取我的 SDK,但我找不到获取 SDK 中包含的 flatc 二进制文件的方法。

我已经在我的 flatbuffers.bb 文件中尝试了一个 do_install_append 并且我已经将对各种 flatbuffers 的依赖项放在另一个 .bb 文件中。我已经在我的机器 .conf 文件中添加了 TOOLCHAIN_HOST_TASK_append。

我确实在 SDK 中获得了 flatbuffers 头文件,但只有 ARM flatc 而不是本机的。

这是我在 .bb 文件中为我们拥有的自定义二进制文件添加的依赖项:

DEPENDS += "yaml-cpp libevent protobuf python3 nativesdk-flatbuffers flatbuffers-native flatbuffers"
DEPENDS_append_class-nativesdk = " flatbuffers"

这是我的 flatbuffers .bb 文件

SUMMARY = "Memory Efficient Serialization Library"
HOMEPAGE = "https://github.com/google/flatbuffers"
SECTION = "console/tools"
LICENSE = "Apache-2.0"

PACKAGE_BEFORE_PN = "${PN}-compiler"

RDEPENDS_${PN}-compiler = "${PN}"
RDEPENDS_${PN}-dev += "${PN}-compiler"

LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=a873c5645c184d51e0f9b34e1d7cf559"

SRCREV = "c0698cc33f1e534bb59c455909b88cc2726089af"

SRC_URI = "git://github.com/google/flatbuffers.git"

# Make sure C++11 is used, required for example for GCC 4.9
CXXFLAGS += "-std=c++11"
BUILD_CXXFLAGS += "-std=c++11"

# BUILD_TYPE=Release is required, otherwise flatc is not installed
EXTRA_OECMAKE += "\
    -DCMAKE_BUILD_TYPE=Release \
    -DFLATBUFFERS_BUILD_TESTS=OFF \
    -DFLATBUFFERS_BUILD_SHAREDLIB=ON \
"
#    -DFLATBUFFERS_BUILD_FLATC=ON

#do_install_append() {
#    install -d ${$D}/${bindir}
#    install ${B}/flatc ${D}${bindir}
#}

inherit cmake

S = "${WORKDIR}/git"

FILES_${PN}-compiler = "${bindir}"
FILES_${PN} += "/usr/lib/*"
FILES_${PN} += "/opt/ousteros/2019.7/sysroots/*"
#FILES_${PN} += "${WORKDIR}/${SDK_ARCH}/usr/bin/flatc"

BBCLASSEXTEND = "native nativesdk"

我得到了 ARM flatc 但没有 x86_64 flatc,我需要它来构建我的其他二进制文件需要的头文件。我的其他二进制文件还不需要那个头文件,我首先想生成一个带有 flatc 的 SDK。

不要在 DEPENDS 中混用 target 和 nativesdk 包。

要将本机工具添加到 SDK,您需要在创建 SDK 的 图像配方 中将 nativesdk-flatbuffers-compiler 添加到 TOOLCHAIN_HOST_TASK