Firefly开源社区

标题: buildroot QT5.12.2编译时qwayland报错 [打印本页]

作者: gaoshanyun    时间: 2022-1-15 11:13
标题: buildroot QT5.12.2编译时qwayland报错
本帖最后由 gaoshanyun 于 2022-1-15 14:01 编辑

项目需要QT 5.12.2,编译时qwayland报错,从错误上看是由于补丁0024-qwaylandwindow-Support-setting-window-blocked-state.patch和版本不符合。重复定义这个可以改下,但是下面还有wlSurface的报错
这些补丁不合行不行?或者有其他的解决方法
另:QT 5.14.2编译时没有报这个错误

  1. <blockquote>2022-01-14T03:35:41 In file included from qwaylandshmbackingstore.cpp:40:
  2. 2022-01-14T03:35:41 qwaylandwindow_p.h:263:21: error: redeclaration of 'bool QtWaylandClient::QWaylandWindow::mBlocked'
  3. 2022-01-14T03:35:41 263 |     bool mBlocked = false;
  4. 2022-01-14T03:35:41 |                     ^~~~~
  5. 2022-01-14T03:35:41 qwaylandwindow_p.h:260:10: note: previous declaration 'bool QtWaylandClient::QWaylandWindow::mBlocked'
  6. 2022-01-14T03:35:41 260 |     bool mBlocked;
  7. 2022-01-14T03:35:41 |          ^~~~~~~~
  8. 2022-01-14T03:35:42 Makefile:1230: recipe for target '.obj/qwaylandshmbackingstore.o' failed
  9. 2022-01-14T03:35:42 make[4]: *** [.obj/qwaylandshmbackingstore.o] Error 1
  10. 2022-01-14T03:35:42 make[4]: *** Waiting for unfinished jobs....
  11. 2022-01-14T03:35:42 In file included from qwaylandwindow.cpp:40:
  12. 2022-01-14T03:35:42 qwaylandwindow_p.h:263:21: error: redeclaration of 'bool QtWaylandClient::QWaylandWindow::mBlocked'
  13. 2022-01-14T03:35:42 263 |     bool mBlocked = false;
  14. 2022-01-14T03:35:42 |                     ^~~~~
  15. 2022-01-14T03:35:42 qwaylandwindow_p.h:260:10: note: previous declaration 'bool QtWaylandClient::QWaylandWindow::mBlocked'
  16. 2022-01-14T03:35:42 260 |     bool mBlocked;
  17. 2022-01-14T03:35:42 |          ^~~~~~~~
  18. 2022-01-14T03:35:42 qwaylandwindow.cpp: In member function 'virtual void QtWaylandClient::QWaylandWindow::raise()':
  19. 2022-01-14T03:35:42 qwaylandwindow.cpp:446:30: error: 'wlSurface' was not declared in this scope; did you mean 'wl_surface'?
  20. 2022-01-14T03:35:42 446 |     if (mSubSurfaceWindow && wlSurface()) {
  21. 2022-01-14T03:35:42 |                              ^~~~~~~~~
  22. 2022-01-14T03:35:42 |                              wl_surface
  23. 2022-01-14T03:35:42 qwaylandwindow.cpp:448:45: error: no matching function for call to 'QtWaylandClient::QWaylandWindow::commit()'
  24. 2022-01-14T03:35:42 448 |         mSubSurfaceWindow->parent()->commit();
  25. 2022-01-14T03:35:42 |                                             ^
  26. 2022-01-14T03:35:42 In file included from qwaylandwindow.cpp:40:
  27. 2022-01-14T03:35:42 qwaylandwindow_p.h:123:10: note: candidate: 'void QtWaylandClient::QWaylandWindow::commit(QtWaylandClient::QWaylandBuffer*, const QRegion&)'
  28. 2022-01-14T03:35:42 123 |     void commit(QWaylandBuffer *buffer, const QRegion &damage);
  29. 2022-01-14T03:35:42 |          ^~~~~~
  30. 2022-01-14T03:35:42 qwaylandwindow_p.h:123:10: note:   candidate expects 2 arguments, 0 provided
  31. 2022-01-14T03:35:42 qwaylandwindow.cpp: In member function 'virtual void QtWaylandClient::QWaylandWindow::lower()':
  32. 2022-01-14T03:35:42 qwaylandwindow.cpp:458:30: error: 'wlSurface' was not declared in this scope; did you mean 'wl_surface'?
  33. 2022-01-14T03:35:42 458 |     if (mSubSurfaceWindow && wlSurface())
  34. 2022-01-14T03:35:42 |                              ^~~~~~~~~
  35. 2022-01-14T03:35:42 |                              wl_surface
  36. 2022-01-14T03:35:42 qwaylandwindow.cpp:459:57: error: return-statement with a value, in function returning 'void' [-fpermissive]
  37. 2022-01-14T03:35:42 459 |         return mSubSurfaceWindow->placeBelow(wlSurface());
  38. 2022-01-14T03:35:42 |                                                         ^
  39. 2022-01-14T03:35:42 qwaylandwindow.cpp: At global scope:
  40. 2022-01-14T03:35:42 qwaylandwindow.cpp:509:6: error: redefinition of 'bool QtWaylandClient::QWaylandWindow::windowEvent(QEvent*)'
  41. 2022-01-14T03:35:42 509 | bool QWaylandWindow::windowEvent(QEvent *event)
  42. 2022-01-14T03:35:42 |      ^~~~~~~~~~~~~~
  43. 2022-01-14T03:35:42 qwaylandwindow.cpp:491:6: note: 'virtual bool QtWaylandClient::QWaylandWindow::windowEvent(QEvent*)' previously defined here
  44. 2022-01-14T03:35:42 491 | bool QWaylandWindow::windowEvent(QEvent *event)

复制代码
patch中差异点:
  1. --- a/src/client/qwaylandwindow_p.h
  2. +++ b/src/client/qwaylandwindow_p.h
  3. @@ -260,6 +260,7 @@ private:
  4.      bool mBlocked;
  5.      void updateInputRegion();

  6. +    bool mBlocked = false;
  7.      bool mUpdateRequested = false;
  8.      bool lastVisible = false;
  9.      QRect mLastExposeGeometry;
  10. --
  11. 2.20.1
复制代码




作者: 时间的蝴蝶    时间: 2022-1-17 11:37
同步代码到最新,repo sync -c
删除编译目录后重新编译,rm -rf buildroot/output
作者: gaoshanyun    时间: 2022-1-17 13:18
时间的蝴蝶 发表于 2022-1-17 11:37
同步代码到最新,repo sync -c
删除编译目录后重新编译,rm -rf buildroot/output

好的,我试试。谢谢
作者: gaoshanyun    时间: 2022-1-17 17:37
采用了遇到错误解决错误的方式解决了这个问题。
1.将QT版本修改为5.12.2, rk356x_linux_release_20211019\buildroot\configs\rockchip\qt.config
BR2_PACKAGE_QT5_VERSION_5_12=y

2.修改qwayland的pro文件,否则不编译插件库。buildroot\output\rockchip_rk3566\build\qt5wayland-5.12.2\src\src.pro
qtConfig(wayland-client) {
    sub_qtwaylandscanner.subdir = qtwaylandscanner
    sub_qtwaylandscanner.target = sub-qtwaylandscanner
    SUBDIRS += sub_qtwaylandscanner

    sub_client.subdir = client
    sub_client.depends = sub-qtwaylandscanner
    sub_client.target = sub-client
    SUBDIRS += sub_client

    /*添加部分*/
    sub_plugins.subdir = plugins
    sub_plugins.depends += sub-qtwaylandscanner
    sub_plugins.depends += sub-client
    sub_plugins.target = sub-plugins
    SUBDIRS += sub_plugins

3.此时编译会报错,将插件中buildroot\output\rockchip_rk3566\build\qt5wayland-5.12.2\src\plugins\hardwareintegration\hardwareintegration.pro


    SUBDIRS += client
    SUBDIRS += compositor /*该行删除*/
    注:项目中没有用compositor


以上笨方法,解决燃眉之急








欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1