Qt for OpenHarmony/zh: Difference between revisions
(create the Chinese version of Qt for OpenHamony) |
|||
(6 intermediate revisions by one other user not shown) | |||
Line 5: | Line 5: | ||
=OpenHarmony 介绍= | =OpenHarmony 介绍= | ||
OpenHarmony是开放原子基金会孵化并运营的开源项目,目标是构建智能终端设备操作系统的框架与平台,旨在面向全场景、全连接、全智能时代的到来,推动万物互联产业的蓬勃发展。 | |||
[https://gitee.com/openharmony OpenHarmony 开源项目] | [https://gitee.com/openharmony OpenHarmony 开源项目] | ||
= | =华为 DevEco Studio 安装= | ||
如果您想开发Qt for OpenHarmony应用程序,除了使用Qt Creator之外,还需要依赖DevEco Studio。 | 如果您想开发Qt for OpenHarmony应用程序,除了使用Qt Creator之外,还需要依赖DevEco Studio。 | ||
Line 17: | Line 17: | ||
但是如果包含的sdk不能满足你的需求,你可以通过下面的方法设置你想要使用的sdk版本: | 但是如果包含的sdk不能满足你的需求,你可以通过下面的方法设置你想要使用的sdk版本: | ||
对于 OpenHarmony 5,您需要安装 API 版本 | 对于 OpenHarmony 5,您需要安装 API 版本 为12 的SDK: | ||
[[File:DevEco_Studio_Preferences.png|alt=DevEco_Studio_Preferences|864x864px]] | [[File:DevEco_Studio_Preferences.png|alt=DevEco_Studio_Preferences|864x864px]] | ||
为了避免因开发环境导致的任何问题,请首先确认是否可以使用 DevEco Studio | 为了避免因开发环境导致的任何问题,请首先确认是否可以使用 DevEco Studio 来开发 Arkts 应用程序。 | ||
=Gerrit 简介= | =Gerrit 简介= | ||
Qt 源代码托管在 Gerrit 上,用于代码审查和版本控制。有关如何使用 Gerrit | Qt 源代码托管在 Gerrit 上,用于代码审查和版本控制。有关如何使用 Gerrit 的所有必要信息都可以在以下页面查看: | ||
*[[Setting up Gerrit]] | *[[Setting up Gerrit]] | ||
*[[Gerrit Introduction]] | *[[Gerrit Introduction]] | ||
=如何获取 Qt for OpenHarmony 源代码= | =如何获取 Qt for OpenHarmony 源代码= | ||
#访问并登录: [https://codereview.qt-project.org/ https://codereview.qt-project.org] | #访问并登录: [https://codereview.qt-project.org/ https://codereview.qt-project.org]。 | ||
#点击右上角的“设置”,打开设置页面。 | #点击右上角的“设置”,打开设置页面。 | ||
#点击“设置”->“HTTP 凭证”->“生成新密码”生成新密码。保存密码以便稍后使用“git clone”使用。 | #点击“设置”->“HTTP 凭证”->“生成新密码”生成新密码。保存密码以便稍后使用“git clone”使用。 | ||
#访问 https://codereview.qt-project.org/admin/repos/qt/tqtc-qt5, 并克隆git 仓库地址。 | #访问 https://codereview.qt-project.org/admin/repos/qt/tqtc-qt5, 并克隆git 仓库地址。 | ||
#cd tqtc-qt5 | #cd tqtc-qt5 | ||
# | #切换分支:git checkout tqtc/harmonyos-5.12.12 or git checkout tqtc/harmonyos-5.15.16 | ||
#更新子模块:git submodule update --init --recursive | #更新子模块:git submodule update --init --recursive | ||
[[File:Codereview-settings.png|left|873x873px]] | [[File:Codereview-settings.png|left|873x873px]] | ||
Line 39: | Line 39: | ||
[[File:GENERATE-NEW-PASSWORD.png|left|874x874px]] | [[File:GENERATE-NEW-PASSWORD.png|left|874x874px]] | ||
Line 48: | Line 58: | ||
[[File:Git-address.png|874x874px]] | [[File:Git-address.png|874x874px]] | ||
=在 macOS 中为 Qt for OpenHarmony 构建 Qt 库= | =在 macOS 中为 Qt for OpenHarmony 构建 Qt 库= | ||
=== | ===准备第三方依赖项=== | ||
以下说明只是基于 macOS Sonoma 14.0进行准备, 并不代表最低依赖条件。 | |||
*git | *git 版本 2.39.3 | ||
*python 3.12.0 | *python 3.12.0 | ||
=== | ===系统环境变量=== | ||
打开 ''~/.zshrc'' 或者''~/.bashrc'' ,并添加一下内容:<syntaxhighlight lang="shell"> | |||
local HARMONY_OS_API_VER=12 | local HARMONY_OS_API_VER=12 | ||
local HOME_LIBRARY=${HOME}/Library | local HOME_LIBRARY=${HOME}/Library | ||
Line 62: | Line 73: | ||
export NATIVE_OHOS_SDK=${OHOS_SDK_12}/native | export NATIVE_OHOS_SDK=${OHOS_SDK_12}/native | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== | ===构建 Qt 源代码=== | ||
您可以使用以下脚本以 arm64-v8a 为目标构建 Qt。 | |||
请填写您本地源目录的路径。<syntaxhighlight lang="shell"> | |||
#!/bin/sh | #!/bin/sh | ||
Line 90: | Line 101: | ||
-ohos-arch ${ARCH} \ | -ohos-arch ${ARCH} \ | ||
-opengles3 \ | -opengles3 \ | ||
-skip qt3d -skip qtactiveqt -skip qtandroidextras -skip qtcanvas3d | -skip qt3d -skip qtactiveqt -skip qtandroidextras -skip qtcanvas3d \ | ||
-skip qtconnectivity -skip qtdatavis3d -skip qtdoc -skip qtdocgallery -skip qtfeedback \ | -skip qtconnectivity -skip qtdatavis3d -skip qtdoc -skip qtdocgallery -skip qtfeedback \ | ||
-skip qtgamepad -skip qtgraphicaleffects -skip qtlocation -skip qtmacextras -skip qtnetworkauth \ | -skip qtgamepad -skip qtgraphicaleffects -skip qtlocation -skip qtmacextras -skip qtnetworkauth \ | ||
Line 97: | Line 108: | ||
-skip qtspeech -skip qtsystems -skip qttools -skip qttranslations -skip qtvirtualkeyboard \ | -skip qtspeech -skip qtsystems -skip qttools -skip qttranslations -skip qtvirtualkeyboard \ | ||
-skip qtwayland -skip qtwebchannel -skip qtwebengine -skip qtwebglplugin -skip qtwebsockets \ | -skip qtwayland -skip qtwebchannel -skip qtwebengine -skip qtwebglplugin -skip qtwebsockets \ | ||
-skip qtwebview -skip qtwinextras -skip qtx11extras | -skip qtwebview -skip qtwinextras -skip qtx11extras -skip doc \ | ||
-no-dbus \ | -no-dbus \ | ||
-c++std c++14 \ | -c++std c++14 \ | ||
-make tests | -make tests | ||
</syntaxhighlight> | </syntaxhighlight>然后,<syntaxhighlight lang="shell"> | ||
make -j16 | make -j16 | ||
make install | make install | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=在 macOS 中为 OpenHarmony 构建 Qt 应用程序= | =在 macOS 中为 OpenHarmony 构建 Qt 应用程序= | ||
=== | ===在 Qt Creator 中为 OpenHarmony 创建开发工具包=== | ||
转到 '''Preferences''' → '''Kits''' → '''Qt Versions'''. 单击添加 '''Add…'''.按钮 | |||
[[File:Macos-qtversion-add.jpg|869x869px]] | [[File:Macos-qtversion-add.jpg|869x869px]] | ||
=== | ===配置 Qt 版本=== | ||
选择编译Qt for OpenHarmony源代码生成的 '''qmake文件:''' | |||
[[File:Macos-oh-qmake.jpg|867x867px]] | [[File:Macos-oh-qmake.jpg|867x867px]] | ||
=== | ===配置 编译器=== | ||
转到 Compilers 选项卡. 单击 Add 按钮,,然后选择 '''Custom''' → '''C'''. | |||
[[File:Oh-compile-c.png|alt=Oh-compile-c|866x866px]] | [[File:Oh-compile-c.png|alt=Oh-compile-c|866x866px]] | ||
设置填写: | |||
Name: '''OHOS Clang''' | Name: '''OHOS Clang''' | ||
Line 131: | Line 142: | ||
[[File:Compilers-filled.jpg|866x866px]] | [[File:Compilers-filled.jpg|866x866px]] | ||
对于 C++ 编译器,请按照上述步骤操作。不过,请确保将名称设置为 OHOS Clang++,并在编译器路径中选择 | |||
clang++ | 并使用 clang++。 | ||
[[File:CppCompilers-filled.jpg|866x866px]] | [[File:CppCompilers-filled.jpg|866x866px]] | ||
=== | ===配置套件=== | ||
转到 '''Kits''' 选项卡。 | |||
单击 '''Add'''按钮。 | |||
[[File:Kits.jpg|869x869px]] | [[File:Kits.jpg|869x869px]] | ||
=== | ===在 Qt Creator 中设置所需的环境变量=== | ||
转到 '''Preferences''' → '''Environment''' → '''System''' ,然后单击环境中系统选项的 '''Change…''' 按钮. | |||
通过添加一行来添加新的环境变量: | |||
'''NATIVE_OHOS_SDK'''=/''path''/''to''/OpenHarmony/Sdk/12/native | '''NATIVE_OHOS_SDK'''=/''path''/''to''/OpenHarmony/Sdk/12/native | ||
Line 151: | Line 162: | ||
[[File:Change-env.jpg|869x869px]] | [[File:Change-env.jpg|869x869px]] | ||
=在 Windows 中为 OpenHarmony 构建 Qt 库= | =在 Windows 中为 OpenHarmony 构建 Qt 库= | ||
=== | ===准备构建环境=== | ||
* | *使用 --recursive 参数从 Gerrit 克隆 qt5 存储库以获取所有子模块,[[Qt for OpenHarmony/zh#如何获取 Qt for OpenHarmony 源代码]]。 | ||
* | *安装 DevEco Studio 并从其 SDK 管理器中下载OpenHarmony/native 包,[[Qt for OpenHarmony/zh#华为 DevEco Studio 安装]]。 | ||
*下载 MinGW 工具链<blockquote>例如 llvm-mingw-20230919-ucrt-x86_64.zip from [https://github.com/mstorsjo/llvm-mingw/releases Releases · mstorsjo/llvm-mingw] 解压并将文件夹复制到 d:\</blockquote> | |||
* | *安装Perl<blockquote>[https://strawberryperl.com/ Strawberry Perl for Windows]</blockquote> | ||
* | *将MinGW 和Perl路径添加到 PATH 环境变量中,如下所示:<blockquote>[[File:Add environment variable.png|frameless|423x423px]]</blockquote> | ||
* | *另外在系统环境变量中添加 MINGW_ROOT 和 PERL_ROOT :<blockquote>[[File:Add root for environment.png|frameless|637x637px]]</blockquote> | ||
* | *打开命令提示符 (使用CMD工具) ,并按照一下方式设置环境变量:<blockquote><syntaxhighlight lang="bat"> | ||
* | |||
REM set NATIVE_OHOS_SDK | REM set NATIVE_OHOS_SDK | ||
SET NATIVE_OHOS_SDK=D:\oh\DevEcoStudio\sdk\HarmonyOS-NEXT-DB6\openharmony\native | SET NATIVE_OHOS_SDK=D:\oh\DevEcoStudio\sdk\HarmonyOS-NEXT-DB6\openharmony\native | ||
Line 170: | Line 180: | ||
SET LLVM_INSTALL_DIR=%NATIVE_OHOS_SDK%\llvm | SET LLVM_INSTALL_DIR=%NATIVE_OHOS_SDK%\llvm | ||
</syntaxhighlight></blockquote> | </syntaxhighlight></blockquote> | ||
=== | ===构建=== | ||
* 使用相同的命令提示符找到你的 qt5 仓库目录并创建与之并行的build目录(不要设置build目录是 qt5 仓库目录的子目录)。然后转到 build 目录,设置一个包含跳过的部分子模块的变量并运行 configure命令:<blockquote><syntaxhighlight lang="bat"> | |||
REM set QT_SKIPS | REM set QT_SKIPS | ||
SET QT_SKIPS=-skip qt3d -skip qtactiveqt -skip qtandroidextras -skip qtcanvas3d | SET QT_SKIPS=-skip qt3d -skip qtactiveqt -skip qtandroidextras -skip qtcanvas3d -skip qtconnectivity -skip qtdatavis3d -skip qtdoc -skip qtdocgallery -skip qtfeedback -skip qtgamepad -skip qtgraphicaleffects -skip qtlocation -skip qtmacextras -skip qtnetworkauth -skip qtpim -skip qtpurchasing -skip qtqa -skip qtremoteobjects -skip qtrepotools -skip qtscript -skip qtscxml -skip qtsensors -skip qtserialbus -skip qtserialport -skip qtspeech -skip qtsystems -skip qttools -skip qttranslations -skip qtvirtualkeyboard -skip qtwayland -skip qtwebchannel -skip qtwebengine -skip qtwebglplugin -skip qtwebsockets -skip qtwebview -skip qtwinextras -skip qtx11extras -no-dbus -skip doc | ||
</syntaxhighlight><syntaxhighlight lang="bat"> | </syntaxhighlight><syntaxhighlight lang="bat"> | ||
REM configure command | REM configure command | ||
call ..\tqtc-qt5\configure.bat -v -xplatform ohos-clang -device-option CROSS_COMPILE=%LLVM_INSTALL_DIR%\bin -prefix c:\Qt\qt-5.12.12-ohos -opensource -confirm-license -debug -no-use-gold-linker %QT_SKIPS% -nomake tests -nomake examples -no-gcc-sysroot -opengles3 -c++std c++14 -ohos-arch arm64-v8a | call ..\tqtc-qt5\configure.bat -v -xplatform ohos-clang -device-option CROSS_COMPILE=%LLVM_INSTALL_DIR%\bin -prefix c:\Qt\qt-5.12.12-ohos -opensource -confirm-license -debug -no-use-gold-linker %QT_SKIPS% -nomake tests -nomake examples -no-gcc-sysroot -opengles3 -c++std c++14 -ohos-arch arm64-v8a | ||
</syntaxhighlight></blockquote> | </syntaxhighlight></blockquote> | ||
* | *配置成功后,您可以使用 mingw32-make进行构建:<blockquote><syntaxhighlight lang="bat"> REM build mingw32-make mingw32-make -j8 </syntaxhighlight></blockquote> | ||
REM build mingw32-make | *构建成功后,您可以使用以下命令开始安装:<blockquote><syntaxhighlight lang="bat"> mingw32-make install </syntaxhighlight></blockquote> | ||
mingw32-make -j8 | |||
</syntaxhighlight></blockquote> | |||
* | |||
mingw32-make install | |||
</syntaxhighlight></blockquote> | |||
=在 Windows 中为 OpenHarmony 构建 Qt 应用程序= | =在 Windows 中为 OpenHarmony 构建 Qt 应用程序= | ||
以下说明内容的前提是,您已经安装了DevEco studio、OpenHarmony工具链,已经有OpenHarmonyOS的设备。 | |||
请注意 Qt5 构建 + 多个选项,目前 Arch 是 arm64-v8a。 | |||
===准备 下载Qt Creator 作为 Qt 开发的IDE === | |||
=== | 下载 Qt Creator,手动创建OpenHarmony构建套件 | ||
===在 Qt Creator 中为 OpenHarmony 创建开发工具包=== | |||
=== | 前往编辑 → 偏好设置 → 构建套件 | ||
===配置 Qt 版本=== | |||
=== | 转到 Qt版本选项卡,单击添加按钮[[File:Add kits.png|none|thumb|927x927px]]转到安装 Qt 5.12.12 for OHOS 的文件夹(应安装在 PREFIX 指定的路径中),然后转到 bin 文件夹,选择 qmake 应用程序并单击打开。例如,之前使用 PREFIX=C:\Qt\qt-5.12.12-ohos 编译了 Qt 源代码,因此 qmake 将位于 C:\Qt\qt-5.12.12-ohos\bin\qmake。将名称设置为 Qt %{Qt:Version} for OHOS。此时,应该有信息表明没有可以为此 Qt 版本生成代码的编译器。[[File:Add qt version.png|none|thumb|986x986px]] | ||
===配置编译器=== | |||
=== | 转到“编译器”选项卡。单击“添加”按钮,然后选择“自定义”→“C” | ||
将名称设置为 OHOS Clang。 | |||
假设您已按照说明从源代码开始构建 Qt 5.12.12 for OHOS,那么应该已经安装了 llvm-mingw。如果没有,请按照 MinGW 工具链安装步骤执行[[Qt for OpenHarmony/zh#准备构建环境]] | |||
将 Make 路径设置为 MinGW 工具链附带的 mingw32-make.exe 可执行文件。它应位于 <path-to-MinGW-toolchain>\bin\mingw32-make.exe。不要忘记将 <path-to-MinGW-toolchain> 替换为实际路径。 | |||
将 ABI 更改为'''arm - linux - generic - elf - 64bit'''[[File:Add clang c.png|none|thumb|993x993px]]对于 c++ 编译器,请按照上述步骤操作。不过,这次请确保将名称设置为 OHOS Clang++,并在编译器路径中选择 clang++.exe。[[File:Add clang c++.png|none|thumb|994x994px]] | |||
=== | ===配置构建套件=== | ||
转到 构建套件选项卡,单击添加按钮 | |||
将名称设置为 OHOS Clang | |||
将 Sysroot 设置为 D:\oh\DevEcoStudio\sdk\HarmonyOS-NEXT-DB6\openharmony\native\sysroot。在 Compiler 部分,选择之前配置的 C(OHOS Clang) 和 C++(OHOS Clang++) 编译器。 | |||
在 Qt 版本中选择之前为 OHOS 配置的 Qt 5.12.12。 | |||
将 Qt mkspec 设置为 ohos-clang。 | |||
完整的套件应如下所示: | |||
[[File:Add ohos clang.png|frameless|991x991px]] | [[File:Add ohos clang.png|frameless|991x991px]] | ||
=== | ===在 Qt Creator 中设置所需的环境变量=== | ||
转到编辑→首选项→环境→系统,然后单击环境部分中的Change...按钮。 | |||
通过添加一行 NATIVE_OHOS_SDK=D:\oh\DevEcoStudio\sdk\HarmonyOS-NEXT-DB6\openharmony\native 添加新的环境变量[[File:Add environment.png|none|thumb|981x981px]] | |||
=== | ===获取 DevEco 项目模板=== | ||
请联系我们以获取用于构建最终 OpenHarmony Qt 应用程序的 DevEco 项目模板。这将用于在 OpenHarmony 设备上运行 Qt 应用程序。 | |||
将 DevEco 项目模板放入已知位置。我们将其命名为 <deveco-project> | |||
转到文件夹 <deveco-project>\entry 并创建一个文件夹 <deveco-project>\entry\libs\arm64-v8a | |||
=== | ===编译一个简单的 Qt 项目=== | ||
为了简化此说明,我们不会从头开始创建应用程序,而是使用Qt widget的现有示例。 | |||
转到您的 Documents 文件夹并创建一个名为 qt_creator_projects 的新文件夹。然后转到资源管理器中的 <qt5-root>\examples\widgets\widgets 文件夹并将整个计算器文件夹复制到 qt_creator_projects 文件夹中 | |||
然后,在 QtCreator 中,单击'''文件'''→'''打开文件'''或项目,然后转到 qt_creator_projects\calculator 并选择 calculator.pro。 | |||
在“配置项目”选项卡中,选择'''OHOS Clang 套件'''并单击'''“配置项目”'''按钮。 | |||
'''通过单击Build''' → '''Build Project “calculator”'''来触发编译,或者使用快捷键:Ctrl+B。项目应该可以顺利编译。 | |||
您应该能够在 Documents\qt_creators_projects\build-calculator-OHOS_Clang-Debug 文件夹中 找到已编译的'''libcalculator.so文件。''' | |||
=在硬件上运行 Qt for OpenHamony 应用程序= | =在硬件上运行 Qt for OpenHamony 应用程序= | ||
=== | ===构建最终的 OHOS 应用程序=== | ||
将上一步中的 libcalculator.so 文件复制到您的 <deveco-project>\entry\libs\arm64-v8a 文件夹中 | |||
然后将所需的库从 <qt-install-path>\lib\ 复制到 <deveco-project>\entry\lib\arm64-v8a\ | |||
例如,对于 libQt5Widgets.so 库,它的复制方法如下(Powershell):<syntaxhighlight lang="bat"> | |||
Copy-Item "<qt-install-path>\lib\libQt5Widgets.so" -Destination "<deveco-project>\entry\libs\arm64-v8a\" | Copy-Item "<qt-install-path>\lib\libQt5Widgets.so" -Destination "<deveco-project>\entry\libs\arm64-v8a\" | ||
</syntaxhighlight> | </syntaxhighlight>类似地,您可以找到 OHOS qpa 插件的所有依赖项,以确保您拥有所有必要的库。 | ||
=== | ===修改 ets 中的初始加载=== | ||
一旦复制了所有库,我们就可以修改 ets源代码, | |||
在 DevEco 中打开 <deveco-project>:[[File:Open template app.png|none|thumb|668x668px]]打开文件 <deveco-project>\entry\src\main\ets\qabilitystage\QAbilitystage.ets。将 qtApplicationName 变量更改为我们要使用的库的名称(libcalculator.so):[[File:Edit EntryAbility.ts.png|none|thumb|1073x1073px]] | |||
=== | ===构建并运行应用程序=== | ||
确保设备已连接。连接后,它应该在 DevEco Studio 中可见。[[File:Device .png|none|thumb|901x901px]]然后添加签名配置,打开 '''file--project structure--signing configs''',勾选所有项,点击OK。[[File:Tempsnip.png|none|thumb|900x900px]]在 DevEco Studio 中选择设备后,您可以直接构建并运行应用程序:[[File:Run app.png|none|thumb|1500x1500px]]'''编译成功'''后,您可以看到应用程序在目标设备上正常运行。 |
Latest revision as of 08:31, 31 October 2024
中文 English
OpenHarmony 介绍
OpenHarmony是开放原子基金会孵化并运营的开源项目,目标是构建智能终端设备操作系统的框架与平台,旨在面向全场景、全连接、全智能时代的到来,推动万物互联产业的蓬勃发展。
华为 DevEco Studio 安装
如果您想开发Qt for OpenHarmony应用程序,除了使用Qt Creator之外,还需要依赖DevEco Studio。
https://developer.huawei.com/consumer/cn/deveco-studio/
一般情况下,不需要配置DevEco Studio使用的sdk版本,因为DevEco Studio默认自带了一个sdk。
但是如果包含的sdk不能满足你的需求,你可以通过下面的方法设置你想要使用的sdk版本:
对于 OpenHarmony 5,您需要安装 API 版本 为12 的SDK:
为了避免因开发环境导致的任何问题,请首先确认是否可以使用 DevEco Studio 来开发 Arkts 应用程序。
Gerrit 简介
Qt 源代码托管在 Gerrit 上,用于代码审查和版本控制。有关如何使用 Gerrit 的所有必要信息都可以在以下页面查看:
如何获取 Qt for OpenHarmony 源代码
- 访问并登录: https://codereview.qt-project.org。
- 点击右上角的“设置”,打开设置页面。
- 点击“设置”->“HTTP 凭证”->“生成新密码”生成新密码。保存密码以便稍后使用“git clone”使用。
- 访问 https://codereview.qt-project.org/admin/repos/qt/tqtc-qt5, 并克隆git 仓库地址。
- cd tqtc-qt5
- 切换分支:git checkout tqtc/harmonyos-5.12.12 or git checkout tqtc/harmonyos-5.15.16
- 更新子模块:git submodule update --init --recursive
在 macOS 中为 Qt for OpenHarmony 构建 Qt 库
准备第三方依赖项
以下说明只是基于 macOS Sonoma 14.0进行准备, 并不代表最低依赖条件。
- git 版本 2.39.3
- python 3.12.0
系统环境变量
打开 ~/.zshrc 或者~/.bashrc ,并添加一下内容:
local HARMONY_OS_API_VER=12
local HOME_LIBRARY=${HOME}/Library
export OHOS_SDK_ROOT=${HOME_LIBRARY}/OpenHarmony/Sdk
export HOS_SDK_HOME=${HOME_LIBRARY}/OpenHarmony/Sdk
export OHOS_SDK_12=${HOS_SDK_HOME}/${HARMONY_OS_API_VER}
export NATIVE_OHOS_SDK=${OHOS_SDK_12}/native
构建 Qt 源代码
您可以使用以下脚本以 arm64-v8a 为目标构建 Qt。
请填写您本地源目录的路径。
#!/bin/sh
# Target architecure
ARCH="arm64-v8a"
# Source and build directories
QT5_ROOT_DIR=<ENTER PATH TO YOUR qt/qt5 DIRECORY>
QT5_BUILD_DIR="$QT5_ROOT_DIR/build_${ARCH}"
# Prepare build directory
mkdir "$QT5_BUILD_DIR"
cd "$QT5_BUILD_DIR"
../configure \
-v \
-xplatform ohos-clang \
-prefix ${NATIVE_OHOS_SDK}/opt/Qt/5.12.12/ohos-${ARCH}-clang/ \
-opensource \
-confirm-license \
-release \
-no-use-gold-linker \
-no-gcc-sysroot \
-ohos-arch ${ARCH} \
-opengles3 \
-skip qt3d -skip qtactiveqt -skip qtandroidextras -skip qtcanvas3d \
-skip qtconnectivity -skip qtdatavis3d -skip qtdoc -skip qtdocgallery -skip qtfeedback \
-skip qtgamepad -skip qtgraphicaleffects -skip qtlocation -skip qtmacextras -skip qtnetworkauth \
-skip qtpim -skip qtpurchasing -skip qtqa -skip qtremoteobjects -skip qtrepotools \
-skip qtscript -skip qtscxml -skip qtsensors -skip qtserialbus -skip qtserialport \
-skip qtspeech -skip qtsystems -skip qttools -skip qttranslations -skip qtvirtualkeyboard \
-skip qtwayland -skip qtwebchannel -skip qtwebengine -skip qtwebglplugin -skip qtwebsockets \
-skip qtwebview -skip qtwinextras -skip qtx11extras -skip doc \
-no-dbus \
-c++std c++14 \
-make tests
然后,
make -j16
make install
在 macOS 中为 OpenHarmony 构建 Qt 应用程序
在 Qt Creator 中为 OpenHarmony 创建开发工具包
转到 Preferences → Kits → Qt Versions. 单击添加 Add….按钮
配置 Qt 版本
选择编译Qt for OpenHarmony源代码生成的 qmake文件:
配置 编译器
转到 Compilers 选项卡. 单击 Add 按钮,,然后选择 Custom → C.
设置填写:
Name: OHOS Clang
Compiler path: /path/to/OpenHarmony/Sdk/12/native/llvm/bin/clang
Make Path: /usr/bin/make
ABI: arm - linux - generic - elf - 64bit
对于 C++ 编译器,请按照上述步骤操作。不过,请确保将名称设置为 OHOS Clang++,并在编译器路径中选择
并使用 clang++。
配置套件
转到 Kits 选项卡。
单击 Add按钮。
在 Qt Creator 中设置所需的环境变量
转到 Preferences → Environment → System ,然后单击环境中系统选项的 Change… 按钮.
通过添加一行来添加新的环境变量:
NATIVE_OHOS_SDK=/path/to/OpenHarmony/Sdk/12/native
在 Windows 中为 OpenHarmony 构建 Qt 库
准备构建环境
- 使用 --recursive 参数从 Gerrit 克隆 qt5 存储库以获取所有子模块,Qt for OpenHarmony/zh#如何获取 Qt for OpenHarmony 源代码。
- 安装 DevEco Studio 并从其 SDK 管理器中下载OpenHarmony/native 包,Qt for OpenHarmony/zh#华为 DevEco Studio 安装。
- 下载 MinGW 工具链
例如 llvm-mingw-20230919-ucrt-x86_64.zip from Releases · mstorsjo/llvm-mingw 解压并将文件夹复制到 d:\
- 安装Perl
- 将MinGW 和Perl路径添加到 PATH 环境变量中,如下所示:
- 另外在系统环境变量中添加 MINGW_ROOT 和 PERL_ROOT :
- 打开命令提示符 (使用CMD工具) ,并按照一下方式设置环境变量:
REM set NATIVE_OHOS_SDK SET NATIVE_OHOS_SDK=D:\oh\DevEcoStudio\sdk\HarmonyOS-NEXT-DB6\openharmony\native REM set OHOS_SDK_SYSROOT SET OHOS_SDK_SYSROOT=%NATIVE_OHOS_SDK%\sysroot REM set LLVM_INSTALL_DIR SET LLVM_INSTALL_DIR=%NATIVE_OHOS_SDK%\llvm
构建
- 使用相同的命令提示符找到你的 qt5 仓库目录并创建与之并行的build目录(不要设置build目录是 qt5 仓库目录的子目录)。然后转到 build 目录,设置一个包含跳过的部分子模块的变量并运行 configure命令:
REM set QT_SKIPS SET QT_SKIPS=-skip qt3d -skip qtactiveqt -skip qtandroidextras -skip qtcanvas3d -skip qtconnectivity -skip qtdatavis3d -skip qtdoc -skip qtdocgallery -skip qtfeedback -skip qtgamepad -skip qtgraphicaleffects -skip qtlocation -skip qtmacextras -skip qtnetworkauth -skip qtpim -skip qtpurchasing -skip qtqa -skip qtremoteobjects -skip qtrepotools -skip qtscript -skip qtscxml -skip qtsensors -skip qtserialbus -skip qtserialport -skip qtspeech -skip qtsystems -skip qttools -skip qttranslations -skip qtvirtualkeyboard -skip qtwayland -skip qtwebchannel -skip qtwebengine -skip qtwebglplugin -skip qtwebsockets -skip qtwebview -skip qtwinextras -skip qtx11extras -no-dbus -skip doc
REM configure command call ..\tqtc-qt5\configure.bat -v -xplatform ohos-clang -device-option CROSS_COMPILE=%LLVM_INSTALL_DIR%\bin -prefix c:\Qt\qt-5.12.12-ohos -opensource -confirm-license -debug -no-use-gold-linker %QT_SKIPS% -nomake tests -nomake examples -no-gcc-sysroot -opengles3 -c++std c++14 -ohos-arch arm64-v8a
- 配置成功后,您可以使用 mingw32-make进行构建:
REM build mingw32-make mingw32-make -j8
- 构建成功后,您可以使用以下命令开始安装:
mingw32-make install
在 Windows 中为 OpenHarmony 构建 Qt 应用程序
以下说明内容的前提是,您已经安装了DevEco studio、OpenHarmony工具链,已经有OpenHarmonyOS的设备。
请注意 Qt5 构建 + 多个选项,目前 Arch 是 arm64-v8a。
准备 下载Qt Creator 作为 Qt 开发的IDE
下载 Qt Creator,手动创建OpenHarmony构建套件
在 Qt Creator 中为 OpenHarmony 创建开发工具包
前往编辑 → 偏好设置 → 构建套件
配置 Qt 版本
转到 Qt版本选项卡,单击添加按钮
转到安装 Qt 5.12.12 for OHOS 的文件夹(应安装在 PREFIX 指定的路径中),然后转到 bin 文件夹,选择 qmake 应用程序并单击打开。例如,之前使用 PREFIX=C:\Qt\qt-5.12.12-ohos 编译了 Qt 源代码,因此 qmake 将位于 C:\Qt\qt-5.12.12-ohos\bin\qmake。将名称设置为 Qt %{Qt:Version} for OHOS。此时,应该有信息表明没有可以为此 Qt 版本生成代码的编译器。
配置编译器
转到“编译器”选项卡。单击“添加”按钮,然后选择“自定义”→“C”
将名称设置为 OHOS Clang。
假设您已按照说明从源代码开始构建 Qt 5.12.12 for OHOS,那么应该已经安装了 llvm-mingw。如果没有,请按照 MinGW 工具链安装步骤执行Qt for OpenHarmony/zh#准备构建环境
将 Make 路径设置为 MinGW 工具链附带的 mingw32-make.exe 可执行文件。它应位于 <path-to-MinGW-toolchain>\bin\mingw32-make.exe。不要忘记将 <path-to-MinGW-toolchain> 替换为实际路径。
将 ABI 更改为arm - linux - generic - elf - 64bit
对于 c++ 编译器,请按照上述步骤操作。不过,这次请确保将名称设置为 OHOS Clang++,并在编译器路径中选择 clang++.exe。
配置构建套件
转到 构建套件选项卡,单击添加按钮
将名称设置为 OHOS Clang
将 Sysroot 设置为 D:\oh\DevEcoStudio\sdk\HarmonyOS-NEXT-DB6\openharmony\native\sysroot。在 Compiler 部分,选择之前配置的 C(OHOS Clang) 和 C++(OHOS Clang++) 编译器。
在 Qt 版本中选择之前为 OHOS 配置的 Qt 5.12.12。
将 Qt mkspec 设置为 ohos-clang。
完整的套件应如下所示:
在 Qt Creator 中设置所需的环境变量
转到编辑→首选项→环境→系统,然后单击环境部分中的Change...按钮。
通过添加一行 NATIVE_OHOS_SDK=D:\oh\DevEcoStudio\sdk\HarmonyOS-NEXT-DB6\openharmony\native 添加新的环境变量
获取 DevEco 项目模板
请联系我们以获取用于构建最终 OpenHarmony Qt 应用程序的 DevEco 项目模板。这将用于在 OpenHarmony 设备上运行 Qt 应用程序。
将 DevEco 项目模板放入已知位置。我们将其命名为 <deveco-project>
转到文件夹 <deveco-project>\entry 并创建一个文件夹 <deveco-project>\entry\libs\arm64-v8a
编译一个简单的 Qt 项目
为了简化此说明,我们不会从头开始创建应用程序,而是使用Qt widget的现有示例。
转到您的 Documents 文件夹并创建一个名为 qt_creator_projects 的新文件夹。然后转到资源管理器中的 <qt5-root>\examples\widgets\widgets 文件夹并将整个计算器文件夹复制到 qt_creator_projects 文件夹中
然后,在 QtCreator 中,单击文件→打开文件或项目,然后转到 qt_creator_projects\calculator 并选择 calculator.pro。
在“配置项目”选项卡中,选择OHOS Clang 套件并单击“配置项目”按钮。
通过单击Build → Build Project “calculator”来触发编译,或者使用快捷键:Ctrl+B。项目应该可以顺利编译。
您应该能够在 Documents\qt_creators_projects\build-calculator-OHOS_Clang-Debug 文件夹中 找到已编译的libcalculator.so文件。
在硬件上运行 Qt for OpenHamony 应用程序
构建最终的 OHOS 应用程序
将上一步中的 libcalculator.so 文件复制到您的 <deveco-project>\entry\libs\arm64-v8a 文件夹中
然后将所需的库从 <qt-install-path>\lib\ 复制到 <deveco-project>\entry\lib\arm64-v8a\
例如,对于 libQt5Widgets.so 库,它的复制方法如下(Powershell):
Copy-Item "<qt-install-path>\lib\libQt5Widgets.so" -Destination "<deveco-project>\entry\libs\arm64-v8a\"
类似地,您可以找到 OHOS qpa 插件的所有依赖项,以确保您拥有所有必要的库。
修改 ets 中的初始加载
一旦复制了所有库,我们就可以修改 ets源代码,
在 DevEco 中打开 <deveco-project>:
打开文件 <deveco-project>\entry\src\main\ets\qabilitystage\QAbilitystage.ets。将 qtApplicationName 变量更改为我们要使用的库的名称(libcalculator.so):
构建并运行应用程序
确保设备已连接。连接后,它应该在 DevEco Studio 中可见。
然后添加签名配置,打开 file--project structure--signing configs,勾选所有项,点击OK。
在 DevEco Studio 中选择设备后,您可以直接构建并运行应用程序:
编译成功后,您可以看到应用程序在目标设备上正常运行。