交叉编译openharmony的qt

Qt对于OpenHarmony的支持补丁位于:https://gitcode.com/openharmony-sig/qt 。使用如下命令下载:

git clone https://github.com/qt/qt5
git submodule update --init
git checkout -b v5.15.12-lts-lgpl v5.15.12-lts-lgpl

当前最新的GA:Alpha_v6 (tag) ,仅支持OpenHarmony API 11(4.1版本),不再兼容API 10、API 9版本。由于Qt5.12.12三方库内存库权限问题,导致Qt5.12.12版本适配需要修复内容过多,后续不再维护Qt5.12.12版本。
[注:https://gitee.com/openharmony-sig/qt/tags]

下载openharmony SDK :
https://cidownload.openharmony.cn/version/Master_Version/OpenHarmony_4.1.6.5_dev/20240129_020225/version-Master_Version-OpenHarmony_4.1.6.5_dev-20240129_020225-ohos-sdk-full.tar.gz

当前5.15.12版本的适配情况:
mkdir ohsdk
cd ohsdk
cp ~/version-Master_Version-OpenHarmony_4.1.6.5_dev-20240129_020225-ohos-sdk-full.tar.gz .
for i in ./*zip ; do
unzip $i ;
done ;

打补丁:

  cd ~/src/qtgithub/qt5/qtbase
  git checkout -b v5.15.12-lts-lgpl v5.15.12-lts-lgpl
  git apply ~/src/qtoh/qt/patch/v5.15.12/qtbase.patch
  ll ~/src/qtoh/qt/patch/v5.15.12/
  cd ~/src/qtgithub/qt5/qt3d
    git checkout -b v5.15.12-lts-lgpl v5.15.12-lts-lgpl
  git apply ~/src/qtoh/qt/patch/v5.15.12/qt3d.patch
  cd ~/src/qtgithub/qt5/qtconnectivity
      git checkout -b v5.15.12-lts-lgpl v5.15.12-lts-lgpl
  git apply ~/src/qtoh/qt/patch/v5.15.12/qtconnectivity.patch
  cd ~/src/qtgithub/qt5/qtdeclarative
      git checkout -b v5.15.12-lts-lgpl v5.15.12-lts-lgpl
  git apply ~/src/qtoh/qt/patch/v5.15.12/qtdeclarative.patch
  cd ~/src/qtgithub/qt5/qtmultimedia
      git checkout -b v5.15.12-lts-lgpl v5.15.12-lts-lgpl
  git apply ~/src/qtoh/qt/patch/v5.15.12/qtmultimedia.patch
  cd ~/src/qtgithub/qt5/qtquickcontrols
      git checkout -b v5.15.12-lts-lgpl v5.15.12-lts-lgpl
  git apply ~/src/qtoh/qt/patch/v5.15.12/qtquickcontrols.patch
  cd ~/src/qtgithub/qt5/qtsensors
      git checkout -b v5.15.12-lts-lgpl v5.15.12-lts-lgpl
  git apply ~/src/qtoh/qt/patch/v5.15.12/qtsensors.patch
  cd ~/src/qtgithub/qt5/qtwebview
      git checkout -b v5.15.12-lts-lgpl v5.15.12-lts-lgpl
  git apply ~/src/qtoh/qt/patch/v5.15.12/qtwebview.patch

编译:

export OHOS_SDK_PATH=/home/tong/ohsdk/ohos-sdk/linux2

mkdir build
cd build/
../configure -xplatform oh-clang -device-option OHOS_ARCH=arm64-v8a -opensource -confirm-license -nomake tests -nomake examples -v -prefix /opt/qtoh -skip qtwebchannel -skip qtgamepad -skip qtscript -skip webengine -skip qtsystems -skip qtlocation -skip qtvirtualkeyboard -opengl es2 -opengles3 -no-dbus -recheck-all

如果需要,可以安装:

https://github.com/lighttransport/tinyusdz.git
cd tinyusdz
#修改CMakeList.txt 搜索Werror 并换为-Wno-error=dangling-reference
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 297c6ff8..80138f34 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -689,7 +689,7 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
 
   option(TINYUSDZ_NO_WERROR "Don't set -Werror when building the tinyusdz library" ${TINYUSDZ_DEFAULT_NO_WERROR})
   if (NOT TINYUSDZ_NO_WERROR)
-    set(TUSDZ_COMPILE_FLAGS "${TUSDZ_COMPILE_FLAGS} -Werror")
+         set(TUSDZ_COMPILE_FLAGS "${TUSDZ_COMPILE_FLAGS} -Wno-error=dangling-reference")
   endif()
 
   # clang17 seems enable -Wunsafe-buffer-usage when `-Weverything` is defined,
@@ -727,7 +727,7 @@ elseif(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
 
   option(TINYUSDZ_NO_WERROR "Don't set -Werror when building the tinyusdz library" ${TINYUSDZ_DEFAULT_NO_WERROR})
   if (NOT TINYUSDZ_NO_WERROR)
-    set(TUSDZ_COMPILE_FLAGS "${TUSDZ_COMPILE_FLAGS} -Werror")
+    set(TUSDZ_COMPILE_FLAGS "${TUSDZ_COMPILE_FLAGS} -Wno-error=dangling-reference")
   endif()
 
   set_source_files_properties(${TINYUSDZ_SOURCES}
(END)

编译
mkdir build 
cmake ..
make
posted @ 2025-05-09 19:59  老禾的账本  阅读(215)  评论(0)    收藏  举报