我包括opencv
在我的 Yocto 图像中使用自定义构建参数。为此,我有一个 opencv_4.1.0.bbappend
配方,我在其中设置自定义选项,特别是 FFMPEG
.食谱是这样的:
DEPENDS += "ffmpeg libpng"
EXTRA_OECMAKE_append += "-DWITH_FFMPEG=ON -DWITH_GTK=OFF" # and some other options
在
configure
期间我收到 cmake 错误,似乎无法弄清楚如何满足 header 依赖项。错误是这样的(我认为这是 do_configure
失败的原因):CheckIncludeFile.c:1:10: fatal error: /home/janos/dev/yocto/build/tmp/work/core2-64-poky-linux/opencv/4.1.0-r0/recipe-sysroot/usr/include/libpng/png.h: No such file or directory
1 | #include </home/janos/dev/yocto/build/tmp/work/core2-64-poky-linux/opencv/4.1.0-r0/recipe-sysroot/usr/include/libpng/png.h>
CheckIncludeFile.c:1:10: fatal error: sys/videoio.h: No such file or directory
1 | #include <sys/videoio.h>
专注于失踪
png.h
标题首先,我很想依赖 libpng-dev
, 我也会 apt install
它。但是没有它的包。当我搜索
oe-pkgdata-util list-pkg-files -p libpng
,我可以在 libpng-dev
中找到标题包裹:...
libpng-dev:
/usr/bin/libpng-config
/usr/bin/libpng16-config
/usr/include/libpng16/png.h
/usr/include/libpng16/pngconf.h
/usr/include/libpng16/pnglibconf.h
/usr/include/png.h
...
...
我也可以在
libpng-src
中找到它还有ffmpeg-src
包(oe-pkgdata-util find-path "*png.h"
是我的 friend )。但是所有这些 -dev 和 -src 包我都不能在 DEPENDS
中依赖。 .我怎样才能让我的食谱知道这些标题?
目标机器是
raspberrypi4-64
,配方在其上配置和编译良好 - 当我为 qemux86-64
构建时失败,我用于测试。即我的测试命令是MACHINE="qemux86-64" bitbake opencv
.
最佳答案
它并没有真正回答我认为是问题的问题 - 但这就是 opencv
配方很容易配置:
PACKAGECONFIG = "python3 libav libv4l v4l"
调查 the opencv 4.1.0 recipe ( opencv_4.1.0.bb ),我可以看到
FFMPEG
使用 libav
启用可配置选项。由于依赖
FFMEPG
,我必须在我的 local.conf
中将“商业”许可证列入白名单文件:LICENSE_FLAGS_WHITELIST = "commercial"
调查
./build/tmp/work/aarch64-poky-linux/opencv/4.1.0-r0/temp/log.do_configure
表明 opencv 在没有 GUI 的情况下正确配置,具有 v4l/v4l2:、FFMPEG、python3 等。等等
python3
在生成的图像中:import cv2
print(cv2.getBuildInformation())
关于opencv - Yocto:cmake 缺少 header - 如何依赖开发包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62379640/