如何在Yocto的正确位置部署Autotools库的Find*.cmake文件?
我为我的公司项目在现有的YoctoGit上创建了一个新层 在这一层中,我添加了一些基于外部如何在Yocto的正确位置部署Autotools库的Find*.cmake文件?,cmake,yocto,autotools,bitbake,cmake-modules,Cmake,Yocto,Autotools,Bitbake,Cmake Modules,我为我的公司项目在现有的YoctoGit上创建了一个新层 在这一层中,我添加了一些基于外部自动工具的库。 一些应用程序需要链接到此库,并且应用程序项目都基于cmake 拿着其中一个库(例如),我可以很容易地找到一些添加到我的库配方中 现在,如果我在PC上运行,只需将这个FindCoAP.cmake文件放在cmake的${cmake\u ROOT}/Modules目录中,但是我应该如何从bitbake配方(安装hook)中继续使我的Find*.cmake模块可用于任何依赖的项目 我应该尝试从系统信
自动工具的库。
一些应用程序需要链接到此库,并且应用程序项目都基于cmake
拿着其中一个库(例如),我可以很容易地找到一些添加到我的库配方中
现在,如果我在PC上运行,只需将这个FindCoAP.cmake
文件放在cmake
的${cmake\u ROOT}/Modules
目录中,但是我应该如何从bitbake
配方(安装hook)中继续使我的Find*.cmake
模块可用于任何依赖的项目
我应该尝试从系统信息中获取Yocto
的cmake
cmake\u 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
}
提前感谢。将FindFoo.cmake与尚未发布的cmake项目一起发布
理想的方法是更新上游项目本身。因此,您将适当地更新配方和包FindFoo.cmake
如果要立即执行此操作,请执行以下操作:
将FindFoo.cmake
添加到您的图层(添加到配方旁边的文件
目录)
将该cmake文件添加到SRC_URI
(即SRC_URI+=)file://FindFoo.cmake“
)
例如,将其安装在do_Install
目录${D}${datadir}/cmake/Modules/
中
通过FILES_${PN}-dev
变量将其打包到dev包中(参见下面的示例配方)
通过其他配方使用该配方
通常的方法是将.cmake
文件打包到${PN}-dev
包中。在您的情况下,您的应用程序(取决于libcoap)只需设置depends=“libcoap”
,所有需要的文件(如标题、库和cmake文件)都将被复制(当然是硬链接)到应用程序的sysroot
CMake模块以各种配方包装,例如:
您的应用程序基于cmake,因此您将在配方中使用继承cmake
。在中设置了本机模块搜索路径
(顺便说一句,我做了一个构建测试,它成功了,但显然没有提供cmake。)那么您想在bitbake运行期间将foo.cmake
安装到主机目录(在OpenEmbeed目录结构之外)?否,我想将其安装到Yocto sysroot,以便在编译cmake应用程序时可以找到库。谢谢你问@TomasNovotny。虽然我开始认为拥有一个FindFoo.cmake
对我没有任何帮助。非常感谢你的回答。这里的信息是黄金,所以我会接受你的答案,尽管它并没有真正回答我假装学到的东西(为一个非cmake项目制作一个FindFoo.cmake以使其工作良好)。我肯定这是我的错。我试图把事情弄错。再次感谢@j4x哦,对不起,我想我更明白。。。我添加了整个“使用尚未发布的cmake项目发布FindFoo.cmake”部分。这正确地回答了你的问题?否则我会再试一次;-)如果你的第一个答案是黄金,那么第二部分就是钻石。我一直试图在没有这个“FindFoo.cmake”的情况下继续前进,但没有幸运()。我想这不是CMake的错,但我还是不能确定。非常感谢@TomasNovotny。