【问题标题】:how to build simple qt application using yocto?如何使用 yocto 构建简单的 qt 应用程序?
【发布时间】:2021-10-23 22:42:49
【问题描述】:

我有 yocto 开发环境设置,我可以在其中 bitbake 并在目标中运行一个简单的 c++ 应用程序。现在我想尝试使用简单的 Qt 应用程序。当我执行 bitbake-layers show-layers 时,它会在列表中显示 meta-qt5...

meta-qt5
/home/prc1cob/repo/out/salt/kawa/../../..//os/external/meta-qt5 7 元 oe
/home/prc1cob/repo/out/salt/kawa/../../../build/yocto/meta-openembedded/meta-oe 6

有了这个,我假设 qt5 已经存在于我的 yocto 构建中。 如何编写 .bb 文件来构建一个简单的 HelloWorld qt 应用程序如下...

#include <QCoreApplication>
#include <QDebug>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    
    qDebug() << "Hello World";

    return a.exec();
}

谢谢!!

【问题讨论】:

    标签: qt yocto bitbake openembedded


    【解决方案1】:

    Yocto 提供了一个很棒的类 qmake5 来编译基于 QMake 的 QT 项目。

    为了使用它,为项目创建一个.pro 文件:

    qtexample.pro

    QT += core
    SOURCES += qtexample.cpp
    

    qtexample.cpp

    #include <QCoreApplication>
    #include <QDebug>
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
        
        qDebug() << "Hello World";
    
        return a.exec();
    }
    

    现在,在您的层中,您可以添加一个简单的配方来编译该项目。

    例如:meta-custom/recipes-project/qtexample

    qtexample 文件夹中创建files 文件夹并将qtexample.proqtexample.cpp 复制到其中。

    qtexample文件夹中直接创建qtexample_0.1.bb配方:

    SUMMARY = "QT Example Recipe"
    LICENSE = "CLOSED"
    
    SRC_URI = "file://qtexample.pro \
               file://qtexample.cpp"
    
    DEPENDS += "qtbase"
    RDEPENDS_${PN} += "qtwayland"
    
    S = "${WORKDIR}"
    
    inherit qmake5
    

    您可以更改课程的版本(0.1)。

    布局应该是这样的:

    meta-custom/
        ├── recipes-project/
            ├── qtexample_0.1.bb
            └── files/
                ├── qtexample.pro
                └── qtexample.cpp
    

    然后,bitbake qtexample 应该可以工作并创建一个 qtexample 二进制文件,您可以在 ${WORKDIR} 中找到该二进制文件

    【讨论】:

    • @TALEL 感谢您的精彩解释。当我尝试运行 bitbake 时出现“错误:没有提供'libnfc'”的错误,然后在 .bb 文件中删除了 libnfc。现在我在 log.do_configure .. .../qtbase/5.12.3+gitAUTOINC+b527725766-r0/git/config.tests/x86_simd/main.cpp > arm-poky-linux-gnueabi-g++ 中遇到错误:错误:无法识别的命令行选项“-mrdrnd”> Makefile:176:目标“main.o”的配方失败> make:*** [main.o] 错误 1
    • 对不起,libnfc 和 libmodbus 是我的错误,所以我删除了它们。我没有理解错误,我认为它与 qt 应用程序无关。请更新您的问题并以更清晰的方式提供错误。
    • 我不确定它是否与 Qt 相关,但是当 qtbase 正在构建时会引发此错误:arm-poky-linux-gnueabi-g++: error: unrecognized command line option '-mrdrnd'从日志文件中,错误的路径显示为 tmp/work/armv7at2hf-neon-poky-linux-gnueabi/qtbase/5.12.3+gitAUTOINC+b527725766-r0/git/config.tests/x86_simd/main.cpp
    猜你喜欢
    • 1970-01-01
    • 2011-04-06
    • 2020-01-23
    • 1970-01-01
    • 2014-11-02
    • 1970-01-01
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    相关资源
    最近更新 更多