【问题标题】:How to deploy a Find*.cmake file for an Autotools library in the correct place for Yocto?如何在 Yocto 的正确位置部署 Autotools 库的 Find*.cmake 文件?
【发布时间】:2019-02-03 10:12:02
【问题描述】:

我在现有的 Yocto git 上为我的公司项目创建了一个新层。

在这一层中,我添加了一些基于 autotools 的外部库。 一些应用程序需要链接到这个库,并且应用程序项目都是基于cmake

使用其中一个库(例如 libcoap)我可以轻松找到一些 FindCoAP.cmake 以添加到我的库配方中。

现在,如果我在 PC 上运行,只需将这个 FindCoAP.cmake 文件放在 cmake${CMAKE_ROOT}/Modules 目录中,但我应该如何,bitbake 配方中(do_install 挂钩),继续让我的Find*.cmake 模块可用于任何人的依赖项目吗?

我应该尝试从这样的系统信息中获取YoctocmakeCMAKE_ROOT变量还是更安全可靠的方法?

do_install_append() {
    cmake --system-information | grep CMAKE_ROOT | cut -d \" -f2
    install -d ${D}/$CMAKE_ROOT}/Modules
    install ${S}/FindCoAP.cmake ${D}/$CMAKE_ROOT}/Modules
}

提前致谢。

【问题讨论】:

  • 所以您想在 bitbake 运行期间将foo.cmake 安装到主机目录(OpenEmbeeded 目录结构之外)?
  • 不,我想将它安装到 Yocto sysroot 以便它可以在编译 cmake 应用程序时找到该库。感谢您询问@TomasNovotny。虽然我开始认为拥有FindFoo.cmake 对我没有任何帮助。

标签: cmake yocto autotools bitbake cmake-modules


【解决方案1】:

将 FindFoo.cmake 与非 cmake 项目一起发布

理想的方式是更新上游项目本身。因此,您将适当地更新您的配方和包装FindFoo.cmake

如果你想马上做:

  1. FindFoo.cmake 添加到您的层(添加到配方旁边的files 目录中)。
  2. 将该 cmake 文件添加到 SRC_URI(即 SRC_URI += "file://FindFoo.cmake")。
  3. 例如将do_install安装到${D}${datadir}/cmake/Modules/目录中。
  4. 通过FILES_${PN}-dev 变量将其打包到开发包中(参见下面的示例配方)。

通过其他配方使用该 cmake

通常的方法是将.cmake文件打包到${PN}-dev包中。在您的情况下,您的应用程序(取决于 libcoap)将只设置 DEPENDS = "libcoap" 并且所有需要的文件(如头文件、库和 cmake 文件)将被复制(嗯,硬链接)到您的应用程序的 sysroot。

CMake 模块被打包在各种配方中,例如:

您的应用程序是基于 cmake 的,因此您将在配方中使用 inherit cmake。原生模块搜索路径设置在cmake.bbclass

(顺便说一句,我对 libcoap recipe from homeassistant layer 进行了构建测试,它成功了,但显然没有发布 cmake。)

【讨论】:

  • 非常感谢您的回答。这里的信息是黄金,所以我会接受你的回答,尽管它并没有真正回答我假装学习的内容(为非 cmake 项目制作一个 FindFoo.cmake 以使其正常工作)。我确信这是我的错。我试图以错误的方式做事。再次感谢!
  • @j4x 哦,对不起,我想我理解得更好......我已经添加了整个“使用非 cmake 项目运送 FindFoo.cmake”部分。这是否正确回答了您的问题?否则我会再试一次;-)
  • 如果您的第一个答案是黄金,那么第二部分是钻石。我一直试图在没有这个“FindFoo.cmake”的情况下继续前进,但没有幸运(stackoverflow.com/questions/52098050/…)。我认为这不是 CMake 的错,但我仍然不能确定。非常感谢@TomasNovotny。
猜你喜欢
  • 2020-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-18
  • 2019-04-10
  • 2012-04-03
相关资源
最近更新 更多