# 编译发行版指南

目前已知支持编译Windows、Linux、Macos系统。

我们提供了三种编译方法：使用Makefile或CMake或XMake。

> CMakeList由[copi143](https://github.com/copi143)提供，谢谢！

## 使用XMake编译

### 需要准备的环境

在编译前，请确保您有：

- **XMake** 用于构建程序 **工具参考版本：xmake v2.9.6**
- **C++编译器** 一个合适的本地编译器 **工具参考版本：g++ 13.1.0**

### 开始编译

执行以下命令进行构建：

``xmake``

使用``xmake run ...``即可运行程序。

## 使用CMake编译

### 需要准备的环境

在编译前，请确保您有：

- **CMake** 用于生成构建脚本 **工具参考版本：CMake 3.29.5**
- **Make** 或 **Ninja** 用于执行构建脚本 **工具参考版本：GNU Make 3.82.90 或 Ninja 1.12.1**
- **C++编译器** `gcc` `clang` `msvc` 三选一 **工具参考版本：g++ 13.1.0**
- **strip** 用于剥削调试信息，减小可执行文件体积 **工具参考版本：GNU strip (GNU Binutils) 2.39**

如果您未安装strip，cmake可能会报错，属正常现象，发行版仍然会编译成功。**如果您希望发行版尽可能小，我们还是建议您安装strip。**

### 开始编译

依次执行以下命令

```sh
git clone https://github.com/CLimber-Rong/stamon.git
cd stamon && mkdir build && cd build
cmake ..
make
```

如果使用的是 **Ninja** 则最后一步替换为

```sh
ninja
```

## 使用Makefile编译

### 需要准备的环境

在编译前，请确保您有：

* **[必要]** make：用于执行Makefile，**工具参考版本：GNU Make 3.82.90**
* **[必要]** C++编译器：用于编译整个项目，默认为G++编译器，如需更换编译器请更改Makefile中的``COMPILER``宏，**工具参考版本：g++ 13.1.0**
* **[非必要]** strip：用于剥削调试信息，减小可执行文件体积，**工具参考版本：GNU strip (GNU Binutils) 2.39**

如果您未安装strip，执行Makefile可能会报错，属正常现象，发行版仍然会编译成功。**如果您希望发行版尽可能小，我们还是建议您安装strip。**

### 开始编译

打开终端，切换到源码目录（即与``Makefile``同级的目录），您可以根据系统来使用编译指令：

* ``make release``：编译Windows发行版（旧指令，但仍然兼容）
* ``make release_win``：编译Windows发行版，在``bin``目录下生成``stamon.exe``
* ``make release_linux``：编译Linux发行版，在``bin``目录下生成``stamon``
* ``make release_macos``：编译MacOS发行版，在``bin``目录下生成``stamon``

