Yocto生成的nativesdk-cmake SDK不完整

时间:2018-03-28 11:11:54

标签: linux cmake sdk yocto

在过去的几天里,我一直在努力使用Yocto Project生成可行的CMake SDK。我正在尝试根据下面给出的图像文件生成SDK:

#To build SDK, use bitbake meta-toolchain

DESCRIPTION = "Embeddev-LXDE image."

LICENSE="CLOSED"

IMAGE_INSTALL = "packagegroup-core-boot \
    packagegroup-core-x11 \
    packagegroup-lxde-base \
    kernel-modules \
"

IMAGE_INSTALL_append = " nano git cmake qtbase qtchooser dbus packagegroup-core-ssh-openssh xterm"

#Framebuffer driver for tft
IMAGE_INSTALL_append = " xf86-video-fbdev"

IMAGE_INSTALL_append = " apt dpkg sudo tzdata glibc-utils localedef networkmanager pointercal xinit xkeyboard-config base-passwd liberation-fonts pkgconfig"

IMAGE_INSTALL_append = " wiringpi"

#Maybe consider connman instead of networkmanager
#vc-graphics is problematic with userland..

inherit populate_sdk

## SDK stuff, to build sdk use bitbake rpi-embeddev-lxde-image -c populate_sdk
# Add all static packages:  SDKIMAGE_FEATURES += "staticdev-pkgs"
SDKIMAGE_FEATURES += "staticdev-pkgs"
SDKIMAGE_FEATURES += "dev-pkgs"
TOOLCHAIN_TARGET_TASK_append = " wiringpi-dev"
TOOLCHAIN_HOST_TASK_append = " nativesdk-cmake"
##
inherit distro_features_check
REQUIRED_DISTRO_FEATURES = "x11"

IMAGE_LINGUAS ?= " "

LICENSE = "MIT"

export IMAGE_BASENAME = "rpi-embeddev-lxde-image"

inherit core-image

ENABLE_SPI_BUS = "1"
ENABLE_I2C = "1"

# qtwebengine qtwebkit ...

do_image_prepend() {

}

我使用bitbake rpi-embeddev-lxde-image -c populate_sdk创建了我的SDK。

我想描述确切的问题。问题是SDK中没有正确安装nativesdk-cmake。 Cmake 3.10.2食谱给出:

do_install_append_class-nativesdk() {
    mkdir -p ${D}${datadir}/cmake
    install -m 644 ${WORKDIR}/OEToolchainConfig.cmake ${D}${datadir}/cmake/

    mkdir -p ${D}${SDKPATHNATIVE}/environment-setup.d
    install -m 644 ${WORKDIR}/environment.d-cmake.sh ${D}${SDKPATHNATIVE}/environment-setup.d/cmake.sh
}

FILES_${PN}_append_class-nativesdk = " ${SDKPATHNATIVE}"

FILES_${PN} += "${datadir}/cmake-${CMAKE_MAJOR_VERSION}"
FILES_${PN}-doc += "${docdir}/cmake-${CMAKE_MAJOR_VERSION}"

BBCLASSEXTEND = "nativesdk"

跟踪问题的根源,我看到应该创建的cmake/目录是在:

创建的
/home/<user>/poky/build/tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-cmake/3.10.2-r0/image/opt/poky/2.4+snapshot/sysroots/x86_64-pokysdk-linux/usr/share/cmake/

但是,这个cmake目录在/opt/poky/2.4+snapshot/sysroots/x86_64-pokysdk-linux/usr/share/中无效,在实际需要的地方 - 不幸的是,当我将SDK安装到/opt时。

我是否需要知道其他任何事情或者如何正确生成SDK?

我真的被困在这里,确实非常感谢任何帮助。

提前致谢。

编辑:我将TOOLCHAIN_TASK语句移到了layer.conf并使用了bitbake meta-toolchain这也无效。

EDIT2 :我使用cmake版本3.6和PREFERRED_PROVIDER_cmake = "3.6.1",但也没有用。

3 个答案:

答案 0 :(得分:3)

即将发布的Yocto Project 2.5,Sumo似乎有一个错误。在这里,似乎省略了sysroots/x86_64-chargestorm-linux/usr/share/cmake/OEToolchainConfig.cmake

此临时解决方案是添加

TOOLCHAIN_HOST_TASK += "nativesdk-cmake-dev"

是的,使用版本总是有帮助的,特别是如果您对某个项目的新手。请记住,始终对所有包含的图层使用相同的版本分支。就个人而言,我不会开始一个基于Morty的新项目,这个项目是在1.5年前发布的时候发布的,因为很可能很快就会退出官方的Yocto项目支持。

答案 1 :(得分:1)

顺便说一句,看来Sumo中仍然是一个bug(或者这会不会是错误的功能??)。只是被这个问题所困扰...解决方法看起来与所描述的相同。

(注意:此 目前是一个发行版... X-D)

答案 2 :(得分:0)

通过使用版本(我使用&#34; morty&#34;,而不是&#34;主分支&#34;)解决了每个图层和poky本身的问题。这显然非常重要。