2. 构建 EUI
选择 2.1 或 2.2 执行即可。创建自己的应用时使用 2.2;它会生成可以复制到应用中的模块目录。
2.1 体验 Gallery
执行位置:EUI 仓库根目录。
Set-Location $euiRoot
cmake -S . -B build/local -G Ninja -DCMAKE_BUILD_TYPE=Release "-DCMAKE_PREFIX_PATH=$qtKit" -DEUI_BUILD_EXAMPLES=ON -DEUI_BUILD_TESTS=OFF
cmake --build build/local
& ./bin/Release/example.exe完成标志: Gallery 打开。搜索 EButton,操作按钮,点击“显示源代码”和“复制源码”;页面下方显示组件 API。
程序在 $euiRoot/bin/Release/example.exe,组件模块在旁边的 EUI/。构建还会将模块复制到 $qtKit/qml/EUI/,这个 SDK 目录需要可写。
2.2 为自己的应用构建组件库
执行位置:EUI 仓库根目录。
Set-Location $euiRoot
cmake -S . -B build/library -G Ninja -DCMAKE_BUILD_TYPE=Release "-DCMAKE_PREFIX_PATH=$qtKit" -DEUI_BUILD_EXAMPLES=OFF -DEUI_BUILD_TESTS=OFF
cmake --build build/library
cmake --install build/library --prefix build/eui-install完成标志: $euiRoot/build/eui-install/imports/EUI/ 中有 qmldir、euiplugin.dll 和其余模块文件。后续复制这个完整目录。以上使用 Release 配置,应用也使用同一 Qt Kit 和 Release 配置。
2.3 只安装 Qt 6 时构建
无需安装 Qt 5。source/qt5 是共享 QML 源码目录;CMake 使用 Python 将其适配到当前构建目录的 source/qt6,再使用 Qt 6 编译插件和 Gallery。源文件不会被转换脚本覆盖,import EUI 1.0 保持不变。
准备 Qt 6.5 或更高版本的桌面 Kit、匹配的 C++ 编译器、CMake、Ninja 和 Python 3。除了组件库基础模块,还需要 Core5Compat、ShaderTools、Multimedia、SVG;Gallery 需要 WebEngineQuick、WebChannel。Qt 6.8+ 安装 Quick3D、QuickTimeline 后可使用原生 3D 示例。文件选择使用 Qt Quick Dialogs,日历使用 Qt Quick Controls,遮罩使用 Qt5Compat.GraphicalEffects,Shader 在构建时生成 .qsb。
在对应编译器的 Developer PowerShell 中执行,将 $qtKit 改成自己的 Qt 6 Kit:
$euiRoot = 'D:/code/EUI'
$qtKit = 'D:/Qt/6.8.3/msvc2022_64'
$env:PATH = "$qtKit/bin;" + $env:PATH
Set-Location $euiRoot
cmake -S . -B build/qt6 -G Ninja -DCMAKE_BUILD_TYPE=Release "-DCMAKE_PREFIX_PATH=$qtKit" "-DQT_DIR=$qtKit/lib/cmake/Qt6" "-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=$euiRoot/build/qt6/bin" -DEUI_BUILD_EXAMPLES=ON -DEUI_BUILD_TESTS=OFF
cmake --build build/qt6
& ./build/qt6/bin/example.exe只构建组件库时,将两个 EUI_BUILD_* 选项设为 OFF,再执行 cmake --install build/qt6 --prefix build/eui-install-qt6。接入第 3 节的应用时,使用相同的 $qtKit,并将复制来源改为 build/eui-install-qt6/imports/EUI。Qt 5 和 Qt 6 使用不同的构建、安装和程序目录,不混用两者的 euiplugin.dll。
Qt 5 和 Qt 6 构建产物需使用对应版本的运行库,不能混用 DLL。