8.6 KiB
通用开发说明
小熊猫C++ 需要 Qt 5.15。
推荐开发环境:
- Visual Studio Code。
- 性能更好。
- Qt Creator。
- (几乎)无需配置。
- 内建 UI 设计器。
- 调试器的 Qt 集成。
设置 Visual Studio Code 开发环境的步骤:
0. 在 Windows 设置中,启用 “开发人员模式”。启用 Git 的 core.symlinks
选项(git config core.symlinks true
)。
- 安装 xmake 和 XMake 扩展。
- 安装 C/C++ 扩展 以支持语言和调试功能。
- 根据需要安装 clangd 和 clangd 扩展以获得更好的代码分析能力。
- 配置工作区:
- 编译命令:
.vscode/compile_commands.json
(命令面板中的 “C/C++: 编辑配置(UI)”); - “Clangd: Arguments”:
--compile-commands-dir=.vscode
; - “Xmake: Additional Config Arguments”:如
--qt=/usr
。
- 编译命令:
- 在命令面板中执行 “XMake: UpdateIntellisense” 以生成编译数据库。
* 提示:xmake 的引入是为了支持编译数据库的生成和功能测试矩阵,目前并不完备。
Windows
库 + 工具链 \ 目标 | x86 | x64 | ARM64 |
---|---|---|---|
MSYS2 + 基于 GNU 的 MinGW | ✔️ | ✔️ | ❌ |
MSYS2 + 基于 LLVM 的 MinGW | ✔️ | ✔️ | ✔️ |
Windows NT 5.x + MinGW Lite | ✔️ | ✔️ | ❌ |
另请参阅详细构建指南——Windows。
MSYS2 的 Qt 库 + MinGW 工具链(推荐)
小熊猫C++ 应该能在 MSYS2 的 MinGW 工具链上构建,包括 3 个基于 GNU 的环境(MINGW32、MINGW64、UCRT64)中的 GCC 和 Clang,以及 3 个基于 LLVM 的环境(CLANG32、CLANG64、CLANGARM64)中的 Clang,关于环境的详情可参考 MSYS2 的文档。以下几个工具链测试较充分:
- MINGW32 GCC,
- MINGW64 GCC,
- UCRT64 GCC(x64 推荐),
- CLANGARM64 Clang(ARM64 唯一可用且推荐的工具链)。
小熊猫C++ 官方版本使用 MINGW32 GCC 和 MINGW64 GCC 构建。
前置条件:
- Windows 10 x64 或更高版本,或 Windows 11 ARM64。
- 安装 MSYS2。
- 在所选环境中安装工具链、Qt 5 库、其他所需工具:
pacman -S \ $MINGW_PACKAGE_PREFIX-{toolchain,qt5-static,7zip,cmake} \ mingw-w64-i686-nsis \ git curl
要构建此项目,启动所选的 MSYS2 环境,然后运行
./packages/msys/build-mingw.sh
以构建带 MinGW GCC 工具链或不带编译器的小熊猫C++ 安装程序和绿色包;或者运行
./packages/msys/build-llvm.sh
以构建带 LLVM MinGW 工具链的小熊猫C++ 安装程序。
通用参数:
-h
、--help
:显示帮助信息。-c
、--clean
:清理构建目录。-nd
、--no-deps
:不检查依赖项。-t <dir>
、--target-dir <dir>
:指定输出目录。默认值为dist/
。
build-mingw.sh
的额外参数:
--mingw32
:把assets/mingw32.7z
添加到包中。--mingw64
:把assets/mingw64.7z
添加到包中。--mingw
:--mingw32
(x86 程序)或--mingw64
(x64 程序)的别名。--ucrt <build>
:把 Windows SDK 附带的 UCRT 运行时添加到包中。例如--ucrt 22621
表示 Windows 11 SDK 22H2。
用于 Windows NT 5.x 的 Qt 库 + MinGW Lite 工具链
build-xp.sh
脚本和 build-mingw.sh
类似,但是会下载独立的 MinGW Lite 工具链来构建用于 Windows NT 5.x 的小熊猫C++。
前置条件:
- Windows 10 x64 或更高版本。
- 安装 MSYS2。
- 安装所需工具:
pacman -S \ mingw-w64-x86_64-{7zip,cmake} \ mingw-w64-i686-nsis \ git curl
- 下载 Windows XP 的 Qt 库并解压到
C:/Qt
。- 目录结构应该如下:
C: └─ Qt └─ 5.15.13 ├─ mingw141_32-msvcrt-redpanda │ ├─ bin │ ├─ include │ ├─ lib │ └─ ... └─ mingw141_64-msvcrt-redpanda ├─ bin ├─ include ├─ lib └─ ...
- 也可以从源代码自行构建 Qt 并在构建时指定
--qt
参数。
- 目录结构应该如下:
要构建此项目,启动所选的 MSYS2 环境,然后运行
./packages/msys/build-xp.sh -p 32-msvcrt
此脚本除了接受 build-mingw.sh
的参数外,还接受以下参数:
-
-p|--profile <profile>
:(必需)MinGW Lite 和 Qt 库的编译配置。可用的配置有64-ucrt
、32-ucrt
、64-msvcrt
、32-msvcrt
、32-win2000
。 -
--qt <dir>
:指定 Qt 库目录。例如--qt /d/myqt-32
。目录结构应该如下:
D: └─ myqt-32 ├─ bin ├─ include ├─ lib └─ ...
Linux
另请参阅详细构建指南——符合 freedesktop.org(XDG)规范的桌面系统。
Alpine Linux、Arch Linux、Debian 及其衍生版本、Fedora、openSUSE
- 准备构建环境(Alpine、Arch、Debians、RPM 文档)。
- 对于 Debian 系:
sudo apt install --no-install-recommends build-essential debhelper devscripts equivs
- 对于 Debian 系:
- 调用构建脚本:
- Alpine Linux:
./packages/alpine/buildapk.sh
- Arch Linux:
./packages/archlinux/buildpkg.sh
- Debian 系:
./packages/debian/builddeb.sh
- Fedora:
./packages/fedora/buildrpm.sh
- openSUSE:
./packages/opensuse/buildrpm.sh
- Alpine Linux:
- 安装软件包:
- Alpine Linux:
~/packages/unsupported/$(uname -m)/redpanda-cpp-git-*.apk
- Arch Linux:
/tmp/redpanda-cpp-git/redpanda-cpp-git-*.pkg.tar.zst
- Debian 系:
/tmp/redpanda-cpp_*.deb
- Fedora、openSUSE:
~/rpmbuild/RPMS/$(uname -m)/redpanda-cpp-git-*.rpm
- Alpine Linux:
- 运行小熊猫C++:
RedPandaIDE
注意:这些构建脚本签出此存储库的 HEAD,因此构建之前务必提交所有变更。
此外,也可以在容器环境中构建(推荐使用 rootless Podman;Docker 可能搞乱文件权限):
podman run --rm -v $PWD:/mnt -w /mnt <image> ./packages/<distro>/01-in-docker.sh
# 以 Arch Linux 为例
podman run --rm -v $PWD:/mnt -w /mnt docker.io/archlinux:latest ./packages/archlinux/01-in-docker.sh
软件包位于 dist/
目录下。
Ubuntu 20.04 x86_64(NOI Linux 2.0)静态链接包
redpanda-cpp-bin
包大体上就是 “AppImage 重新打包”。真正的构建过程在容器中进行,因此构建主机不一定要 Ubuntu 20.04,任何 Linux 发行版只要有 Podman 和 dpkg 就行。
- 安装 Podman,如果不是 Debian 及其衍生版还要安装 dpkg。
警告:不要在非 Debian 系上使用 dpkg 安装软件包,否则将会破坏系统。sudo apt install podman
- 调用构建脚本:
./packages/debian-static/builddeb.sh
软件包位于 dist/
目录下。
Linux AppImage
podman run --rm -v $PWD:/mnt -w /mnt quay.io/redpanda-cpp/appimage-builder-x86_64:20240304.0 ./packages/appimage/01-in-docker.sh
Dockerfile 位于 redpanda-cpp/appimage-builder。可用架构:x86_64
、aarch64
、riscv64
。
macOS
Qt.io 的 Qt 库
前置条件:
- macOS 10.13 或更高版本。
- 安装 Xcode 命令行工具:
xcode-select --install
- 用 Qt.io 或镜像站的在线安装器安装 Qt。
- 选中 Qt 库(“Qt” 组下的 “Qt 5.15.2” 小组,勾选 “macOS”)。
构建:
- 设置相关变量:
SRC_DIR="~/redpanda-src" BUILD_DIR="~/redpanda-build" INSTALL_DIR="~/redpanda-pkg"
- 定位到构建目录:
rm -rf "$BUILD_DIR" # 根据需要进行全新构建 mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR"
- 配置、构建、安装:
~/Qt/5.15.2/clang_64/bin/qmake PREFIX="$INSTALL_DIR" "$SRC_DIR/Red_Panda_CPP.pro" make -j$(sysctl -n hw.logicalcpu) make install ~/Qt/5.15.2/clang_64/bin/macdeployqt "$INSTALL_DIR/bin/RedPandaIDE.app"