繁体   English   中英

带有 cmake 工具链文件的 Yocto SDK

[英]Yocto SDK with cmake toolchain file

我提供了一个 Yocto SDK 来为嵌入式目标交叉构建应用程序。 应用程序本身是使用 CMake 构建的。 SDK 安装脚本提供了许多必要的环境变量(如交叉编译器的位置、sysroot 等),到目前为止,这些变量足以构建应用程序。

但是,由于最近该应用程序依赖于 Boost 库(通过 CMakeLists.txt 中的命令find_package(Boost REQUIRED) )。 现在 CMake 抱怨它找不到库,即使它安装在 SDK sysroot 中。 但是如果我直接在 Yocto 中构建应用程序,它就可以正常工作。

经过一番研究,发现 Yocto 生成了一个toolchain.cmake文件,该文件被添加到 cmake 调用中。 在此文件中,设置了变量CMAKE_FIND_ROOT_PATH ,CMake 需要使用该变量查找库。 使用这样的工具链文件,我也可以使用 SDK 进行构建。

现在我想知道 Yocto 是否提供任何机制来使用 SDK 导出这样的工具链文件。 或者,如果 SDK 提供脚本或其他东西来直接在 SDK 构建主机上自动创建工具链文件。

或者我应该告诉 SDK 的用户手动创建一个工具链文件并将其添加到他们的 cmake 调用中?

假设您使用的是基于图像的 SDK,即使用bitbake <image> -c populate_sdk构建它,将以下内容添加到image.bb应该可以修复它:

TOOLCHAIN_HOST_TASK += "nativesdk-cmake"

这应该会在 SDK 中为您提供一个OEToolchainConfig.cmake文件。 获取 SDK 环境文件后, cmake将成为cmake -DCMAKE_TOOLCHAIN_FILE=$OECORE_NATIVE_SYSROOT/usr/share/cmake/OEToolchainConfig.cmake以进一步帮助您的开发人员。

我想在 Anders 的回答中补充说,虽然以这种方式添加nativesdk-cmake对我来说效果很好,但当我尝试添加nativesdk-python3-numpy时它不起作用。 一些使用Google后,我发现这个,这表明TOOLCHAIN_HOST_TASK必须使用被扩展_append代替+=

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM