如何正确交叉编译含有<opencv/core.hpp>头文件的cpp源码

这几天参考网上资料尝试了很多次交叉编译cpp文件,都是报错fatal error: opencv2\opencv.hpp: No such file or directory,目前实现了用g++后面加上头文件的路径就可以编译opencv,在g++前加交叉编译的命令可以实现交叉编译,但是无法做到交叉编译含有opencv头文件的cpp代码,请问能给出详细一点的操作步骤吗

  • 虚拟机里的toolchain包含了 opencv:  /home/g2l/Yocto_qsb_g2l/build/tmp/deploy/sdk/poky-glibc-x86_64-core-image-qt-aarch64-smarc-rzg2l-toolchain-3.1.5.sh,虚拟机里缺省安装了这个toolchain。

    编译前先运行 source  /opt/poky/3.1.5/environment-setup-aarch64-poky-linux

    然后在qt的pro文件里把 header file以及库的路径设好,可以参考ai demo的pro文件: /home/g2l/Yocto_qsb_g2l/build/tmp/work/aarch64-poky-linux/gx-edge-ai-demo/1.0-r0/git

    另外的方法是,安装QtCreator,在工具->Kits->编译器 里添加交叉编译器,选中交叉编译器作为缺省编译器,设置好后利用QtCreator生成pro文件。这对于多个qt项目,或者在项目中需要用到其他的库比较方便。

  • 要交叉编译的话,一定要使用qt的pro文件来设置库的路径吗,如果用类似aarsh64....-g++  ...cpp `pkg-config --libs --cflags opencv4`这种语句可以交叉编译吗

  • qt由pro生成Makefile文件,可以直接在Makefile修改编译选项,但是这是非常规做法。一旦pro里改了内容,运行qmake后Makefile被更新,之前手动修改内容就丢失了。