我在现有的Yocto git上为我的公司项目创建了一个新的层。
在这一层中,我添加了一些基于autotools的外部库。一些应用程序需要链接到这个库,并且应用程序项目都是基于cmake的。
以其中一个库(例如利布考)为例,我可以很容易地找到一些FindCoAP.cmake来添加到我的库配方中。
现在,如果我在PC上运行,这只是一个将这个FindCoAP.cmake文件放在cmake的${CMAKE_ROOT}/Modules dir中的问题,但是我应该如何从bitbake食谱(do_install钩子)中着手使我的Find*.cmake模块可供任何人的依赖项目使用?
我应该试着从这样的系统信息中获取Yocto的cmake CMAKE_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
}提前谢谢。
发布于 2018-08-29 14:13:10
与非cmake项目一起交付FindFoo.cmake
最理想的方式是更新上游项目本身。因此,您将适当地更新您的菜谱和包FindFoo.cmake。
如果你现在想做的话:
FindFoo.cmake添加到您的层中(添加到菜谱旁边的files目录)。SRC_URI (即SRC_URI += "file://FindFoo.cmake")中。do_install中将其安装到${D}${datadir}/cmake/Modules/目录中。FILES_${PN}-dev变量将其打包到dev包中(参见下面的示例菜谱)。使用其他菜谱的cmake
通常的方法是将.cmake文件打包到${PN}-dev包中。在您的示例中,您的应用程序(依赖于libcoap)将只设置DEPENDS = "libcoap",并且所有所需的文件(如头、库和cmake文件)将被复制(很好,硬链接)到应用程序的sysroot。
CMake模块打包在不同的菜谱中,例如:
您的应用程序是基于cmake的,因此您将在菜谱中使用inherit cmake。本机模块搜索路径在cmake.bbclass中设置。
(顺便说一句,我对来自家庭辅助层的libcoap配方做了一个构建测试,它成功了,但显然没有提供cmake。)
https://stackoverflow.com/questions/52063591
复制相似问题