TypePHP\Qt
指南
控件
深入
参考
FAQ
  • English
  • 简体中文
GitHub
指南
控件
深入
参考
FAQ
  • English
  • 简体中文
GitHub
  • 参考

    • 参考
    • CLI
    • API 参考
    • 打包
    • 平台支持

平台支持

能力矩阵

平台编译 / 运行 / 无头验收打包依赖
Windows✅✅ dist/ 目录(windeployqt)Qt 6 + MSVC
macOS (Apple Silicon)✅✅ dist/<Name>.app(macdeployqt + ad-hoc 签名)brew install qtbase libiconv
Linux (Debian/Ubuntu)✅✅ dist/<name>/(ldd 闭包 + patchelf + qt.conf)见下

三个平台都是 --selftest 14/14、--difftest 20/20。

实测环境

平台环境
WindowsWindows 10.0.26100 · MSVC 2022 BuildTools · Qt 6.9.3 msvc2022_64 · tpc v0.9.4
macOSApple Silicon · Homebrew qtbase 6.11.2 · tpc 自建私有 embed 运行时
LinuxDebian 12 arm64 · qt6-base-dev 6.4.2 · cmake 3.25.1 · Qt 6.4.2

Linux 侧 build 产出 ELF PIE aarch64(约 58 MB),QT_QPA_PLATFORM=offscreen 下 --selftest 14/14、--difftest 20/20、--shot 出图全部 rc=0。package 出 dist/hello/(实测 85 个 .so + 10 个 Qt 插件,140.3 MB),产物在 env -i QT_QPA_PLATFORM=offscreen 下同样全绿。

Linux 依赖

首次编译要现编私有 PHP embed 运行时,除 Qt 外还需要:

apt install -y qt6-base-dev cmake g++ pkg-config bison re2c autoconf xz-utils patchelf \
  zlib1g-dev libxml2-dev libsqlite3-dev libonig-dev libgmp-dev libmpfr-dev
包用途
qt6-base-devQt 6 Widgets
cmake g++ pkg-config构建
bison re2c autoconf xz-utilsPHP 源码构建流程
patchelf打包时改 DT_RPATH
zlib1g-dev libxml2-dev libsqlite3-dev libonig-devPHP 扩展
libgmp-dev libmpfr-devphpx 依赖

qtphp doctor 在 Linux 上会检查这 12 项,缺哪个就打出可直接粘贴的 apt install -y …(只 WARN)。

平台差异速查

事项WindowsmacOSLinux
产物名<name>.exe<name><name>
编译入口 ymlproject.ymlproject.macos.ymlproject.linux.yml
C++ 编译器MSVC(cl.exe)clang++g++
Qt 链接方式Qt6Xxx.libframework(-F + -I)-lQt6Xxx
Qt 定位C:/D: 盘常见路径brew keg-onlyDebian 多架构 /usr
PHP 运行时需搬 DLL全静态,无需搬同 macOS
打包工具windeployqtmacdeployqt自己组装(ldd 闭包)
部署检查查 DLLotool -Lldd
GUI 子系统--no-console不适用不适用
无头平台插件qwindows.dll需补拷 libqoffscreen.dylib包内已有整个 platforms/

已知边界

以下未实测(来自项目记录):

  • 真实 X 桌面上的 xcb 运行 —— Linux 侧只在 offscreen 下验证过。
  • eglfs / linuxfb / vnc 平台插件 —— 未测。
  • 跨发行版 —— 只在 Debian 12 上测过,Ubuntu / Fedora 未测。
  • Windows 上的 offscreen 插件补拷 —— 逻辑与 macOS 同款,本机无环境验证。
  • 纯托盘应用 —— 包当前把托盘定位为窗口应用的附加能力,常驻后台的纯托盘应用需要手写桥接。

平台相关的构建开关

开关平台说明
/Zc:__cplusplusWindowsQt MSVC 头文件要求
/permissive-Windows同上
/EHscWindows异常处理
-fPICLinux位置无关代码
-F<QT>/libmacOS必须同时在 cxx-flags 和 ld-flags 里

macOS 的 -F 有个坑:QtWidgets/qabstractitemview.h 这类 framework 转发头内部用限定名,所以 -F 除了链接期,编译期也要给。

在 GitHub 上编辑此页
最后更新: 2026/10/6 03:13
Prev
打包