RedPanda-CPP/BUILD_cn.md

8.8 KiB
Raw Blame History

通用开发说明

小熊猫C++ 需要 Qt 5.15。

推荐开发环境:

  1. Visual Studio Code。
    • 性能更好。
  2. Qt Creator。
    • (几乎)无需配置。
    • 内建 UI 设计器。
    • 调试器的 Qt 集成。

设置 Visual Studio Code 开发环境的步骤: 0. 在 Windows 设置中,启用 “开发人员模式”。启用 Git 的 core.symlinks 选项(git config core.symlinks true)。

  1. 安装 xmakeXMake 扩展
  2. 安装 C/C++ 扩展 以支持语言和调试功能。
  3. 根据需要安装 clangdclangd 扩展以获得更好的代码分析能力。
  4. 配置工作区:
    • 编译命令:.vscode/compile_commands.json(命令面板中的 “C/C++: 编辑配置(UI)”);
    • “Clangd: Arguments”--compile-commands-dir=.vscode
    • “Xmake: Additional Config Arguments”--qt=/usr
  5. 在命令面板中执行 “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 GCCx64 推荐),
  • CLANGARM64 ClangARM64 唯一可用且推荐的工具链)。

小熊猫C++ 官方版本使用 MINGW32 GCC 和 MINGW64 GCC 构建。

前置条件:

  1. Windows 10 x64 或更高版本,或 Windows 11 ARM64。
  2. 安装 MSYS2。
  3. 在所选环境中安装工具链、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--mingw32x86 程序)或 --mingw64x64 程序)的别名。
  • --ucrt <build>:把 Windows SDK 附带的 UCRT 运行时添加到包中。例如 --ucrt 22621 表示 Windows 11 SDK 22H2。

用于 Windows NT 5.x 的 Qt 库 + MinGW Lite 工具链

build-xp.sh 脚本和 build-mingw.sh 类似,但是工具链由 Qt 库提供。

前置条件:

  1. Windows 10 x64 或更高版本。
  2. 安装 MSYS2。
  3. 安装所需工具:
    pacman -S \
      mingw-w64-x86_64-{7zip,cmake} \
      mingw-w64-i686-nsis \
      git curl
    
  4. 下载 Windows XP 的 Qt 库并解压到 C:/Qt
    • 目录结构应该如下:
      C:
      └─ Qt
         └─ 5.15.13+redpanda1
            ├─ mingw141_32-msvcrt
            │  ├─ bin
            │  │  ├─ gcc.exe
            │  │  ├─ mingw32-make.exe
            │  │  └─ qmake.exe
            │  ├─ include
            │  ├─ lib
            │  └─ ...
            └─ mingw141_64-msvcrt
               ├─ bin
               │  ├─ gcc.exe
               │  ├─ mingw32-make.exe
               │  └─ qmake.exe
               ├─ include
               ├─ lib
               └─ ...
      
    • 也可以从源代码自行构建 Qt 并在构建时指定 --qt 参数。

要构建此项目,启动 MSYS2 环境,然后运行

./packages/msys/build-xp.sh -p 32-msvcrt

此脚本除了接受 build-mingw.sh 的参数外,还接受以下参数:

  • -p|--profile <profile>必需MinGW Lite 和 Qt 库的编译配置。可用的配置有 64-ucrt32-ucrt64-msvcrt32-msvcrt32-win2000

  • --qt <dir>:指定 Qt 库目录。例如 --qt /d/myqt-32

    目录结构应该如下:

    D:
    └─ myqt-32
       ├─ bin
       ├─ include
       ├─ lib
       └─ ...
    

Linux

另请参阅详细构建指南——符合 freedesktop.orgXDG规范的桌面系统

Alpine Linux、Arch Linux、Debian 及其衍生版本、Fedora、openSUSE

  1. 准备构建环境(AlpineArchDebiansRPM 文档)。
    • 对于 Debian 系:
      sudo apt install --no-install-recommends build-essential debhelper devscripts equivs
      
  2. 调用构建脚本:
    • 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
  3. 安装软件包:
    • 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
  4. 运行小熊猫C++
    RedPandaIDE
    

注意:这些构建脚本签出此存储库的 HEAD因此构建之前务必提交所有变更。

此外,也可以在容器环境中构建(推荐使用 rootless PodmanDocker 可能搞乱文件权限):

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_64NOI Linux 2.0)静态链接包

redpanda-cpp-bin 包大体上就是 “AppImage 重新打包”。真正的构建过程在容器中进行,因此构建主机不一定要 Ubuntu 20.04,任何 Linux 发行版只要有 Podman 和 dpkg 就行。

  1. 安装 Podman如果不是 Debian 及其衍生版还要安装 dpkg。
    sudo apt install podman
    
    警告不要在非 Debian 系上使用 dpkg 安装软件包,否则将会破坏系统。
  2. 调用构建脚本:
    ./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_64aarch64riscv64

macOS

Qt.io 的 Qt 库

前置条件:

  1. macOS 10.13 或更高版本。
  2. 安装 Xcode 命令行工具:
    xcode-select --install
    
  3. Qt.io镜像站的在线安装器安装 Qt。
    • 选中 Qt 库“Qt” 组下的 “Qt 5.15.2” 小组,勾选 “macOS”

构建:

  1. 设置相关变量:
    SRC_DIR="~/redpanda-src"
    BUILD_DIR="~/redpanda-build"
    INSTALL_DIR="~/redpanda-pkg"
    
  2. 定位到构建目录:
    rm -rf "$BUILD_DIR" # 根据需要进行全新构建
    mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR"
    
  3. 配置、构建、安装:
    ~/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"