首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Autotools库的Find*.cmake文件部署在Yocto的正确位置?

如何将Autotools库的Find*.cmake文件部署在Yocto的正确位置?
EN

Stack Overflow用户
提问于 2018-08-28 17:41:37
回答 1查看 1.1K关注 0票数 1

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

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

以其中一个库(例如利布考)为例,我可以很容易地找到一些FindCoAP.cmake来添加到我的库配方中。

现在,如果我在PC上运行,这只是一个将这个FindCoAP.cmake文件放在cmake${CMAKE_ROOT}/Modules dir中的问题,但是我应该如何从bitbake食谱(do_install钩子)中着手使我的Find*.cmake模块可供任何人的依赖项目使用?

我应该试着从这样的系统信息中获取Yoctocmake CMAKE_ROOT变量,还是一种更安全、更可靠的方法?

代码语言:javascript
复制
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
}

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-29 14:13:10

与非cmake项目一起交付FindFoo.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变量将其打包到dev包中(参见下面的示例菜谱)。

使用其他菜谱的cmake

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

CMake模块打包在不同的菜谱中,例如:

  • 李贝根
  • opencv
  • 强生精神

您的应用程序是基于cmake的,因此您将在菜谱中使用inherit cmake。本机模块搜索路径在cmake.bbclass中设置。

(顺便说一句,我对来自家庭辅助层的libcoap配方做了一个构建测试,它成功了,但显然没有提供cmake。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52063591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档