如何在 Yocto 的正确位置为 Autotools 库部署 Find*.cmake 文件?
How to deploy a Find*.cmake file for an Autotools library in the correct place for Yocto?
我为公司项目在现有 Yocto git 上创建了一个新层。
在这一层中,我添加了一些基于 autotools
的外部库。
一些应用程序需要 link 针对此库,并且应用程序项目都基于 cmake
。
使用其中一个库(例如 libcoap) I could easily find some FindCoAP.cmake
添加到我的库食谱中。
现在如果我是 运行 在 PC 上,只需将这个 FindCoAP.cmake
文件放在 cmake
的 ${CMAKE_ROOT}/Modules
目录中,但是应该如何我,从 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
}
提前致谢。
与 non-yet-cmake 项目一起发布 FindFoo.cmake
理想的方法是更新上游项目本身。因此,您将适当地更新您的食谱和包装 FindFoo.cmake
。
如果你现在想做:
- 将
FindFoo.cmake
添加到您的图层(添加到食谱旁边的 files
目录)。
- 将该 cmake 文件添加到
SRC_URI
(即 SRC_URI += "file://FindFoo.cmake"
)。
- 例如将其安装在
do_install
目录 ${D}${datadir}/cmake/Modules/
中。
- 通过
FILES_${PN}-dev
变量将其打包到开发包中(参见下面的示例食谱)。
通过其他配方使用该 cmake
通常的做法是将.cmake
个文件打包到${PN}-dev
包中。在您的情况下,您的应用程序(取决于 libcoap)将只设置 DEPENDS = "libcoap"
并且所有需要的文件(如 headers、库和 cmake 文件)将被复制(好吧,硬链接)到 sysroot你的申请。
CMake 模块打包在各种配方中,例如:
您的应用程序是基于 cmake 的,因此您将在配方中使用 inherit cmake
。本机模块搜索路径设置在 cmake.bbclass.
(顺便说一句,我对 libcoap recipe from homeassistant layer 进行了构建测试并且它有效,但显然没有 cmake 发货。)
我为公司项目在现有 Yocto git 上创建了一个新层。
在这一层中,我添加了一些基于 autotools
的外部库。
一些应用程序需要 link 针对此库,并且应用程序项目都基于 cmake
。
使用其中一个库(例如 libcoap) I could easily find some FindCoAP.cmake
添加到我的库食谱中。
现在如果我是 运行 在 PC 上,只需将这个 FindCoAP.cmake
文件放在 cmake
的 ${CMAKE_ROOT}/Modules
目录中,但是应该如何我,从 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
}
提前致谢。
与 non-yet-cmake 项目一起发布 FindFoo.cmake
理想的方法是更新上游项目本身。因此,您将适当地更新您的食谱和包装 FindFoo.cmake
。
如果你现在想做:
- 将
FindFoo.cmake
添加到您的图层(添加到食谱旁边的files
目录)。 - 将该 cmake 文件添加到
SRC_URI
(即SRC_URI += "file://FindFoo.cmake"
)。 - 例如将其安装在
do_install
目录${D}${datadir}/cmake/Modules/
中。 - 通过
FILES_${PN}-dev
变量将其打包到开发包中(参见下面的示例食谱)。
通过其他配方使用该 cmake
通常的做法是将.cmake
个文件打包到${PN}-dev
包中。在您的情况下,您的应用程序(取决于 libcoap)将只设置 DEPENDS = "libcoap"
并且所有需要的文件(如 headers、库和 cmake 文件)将被复制(好吧,硬链接)到 sysroot你的申请。
CMake 模块打包在各种配方中,例如:
您的应用程序是基于 cmake 的,因此您将在配方中使用 inherit cmake
。本机模块搜索路径设置在 cmake.bbclass.
(顺便说一句,我对 libcoap recipe from homeassistant layer 进行了构建测试并且它有效,但显然没有 cmake 发货。)