交叉编译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
浙公网安备 33010602011771号