2. 关于环境搭建#
按道理项目的README写着,但这里还是需要额外说明一些。
首先第一步,自然是克隆仓库了,git clone走一波。(链接在上一章)
而关于本体的修改,又分为修改cpp代码和不碰cpp代码两种,后者因为无需编译,步骤也简单了不少。
2.1. 不编译#
新月杀把占了源码大头的Lua和Qml代码都直接放在文件夹里面呢。这意味着只要修改它们就能实现对本体的改进了。这种情况下,环境搭建的步骤如下:
克隆仓库,也就是用
git clone把仓库下载到本地。因为存在子模块,你还需要使用git submodule update --init来拉取子模块内容。下载新月杀最新版本,将游戏文件夹中所有文件复制到仓库中(若询问是否替换,点“否”即可),因为有ignore文件,你复制的exe和dll等等不会被git考虑。
双击FreeKill.exe启动新月杀。
对各种脚本文件进行修改啥的吧,直接启动新月杀即可进行测试。完成之后一样的进行commit和push,然后去网页发起PR。
2.2. 编译#
若想改的更加深入一些,就需要进行编译了。
事先声明:编译FK对于初次接触Qt的玩家而言是个比较折磨的过程。
2.2.1. 全平台通用步骤#
FreeKill采用Qt 6.5.3 LTS 进行构建,因此需要先安装Qt6的开发环境。
无论是Win还是Linux,都建议用Qt官方的下载器 (https://download.qt.io/official_releases/online_installers/) 进行安装。当然了,在一些软件更新很频繁的Linux发行版里面,可能已经能从包管理器安装Qt6,对此后文细说。这个环节介绍用Qt安装器安装的步骤。
Qt安装的流程不赘述。为了编译FreeKill,至少需要安装以下的组件:
Qt 6: MinGW 11.2.0 64-bit
Qt 6: Qt5 Compat
Qt 6: Shader Tools (为了使用GraphicalEffects)
Qt 6: Multimedia
QtCreator
CMake、Ninja
OpenSSL最新版
接下来根据平台的不同,步骤也稍有区别。
2.2.2. Windows#
从网络上下载swig。swig在其官网可以下载。
全都下载完成之后,将含有swig.exe的文件夹设置到Path环境变量里面去。
接下来使用QtCreator打开项目,然后尝试编译。
这时遇到cmake报错:OpenSSL:Crypto not found.
这是因为我们还没有告诉编译器OpenSSL的位置,点左侧“项目”,查看构建选项,
在CMake的Initial Configuration中,点击添加按钮,新增String型环境变量
OPENSSL_ROOT_DIR, 将其值设为跟Qt一同安装的OpenSSL的位置
(如C:/Qt/Tools/OpenSSL/Win_x64)。然后点下方的Re-configure with Initial
Parameters,这样就能正常编译了。
运行的话,在Qt Creator的项目选项->运行中,先将工作目录改为项目所在的目录 (git仓库的目录)。然后先将编译好了的FreeKill.exe放到项目目录中, 在目录下打开CMD,执行windeployqt FreeKill.exe。调整目录下的dll 文件直到能运行起来为止,之后就可以在Qt Creator中正常运行和调试了。
2.2.3. Linux#
通过包管理器安装一些额外软件包方可编译。
Debian一家子:
$ sudo apt install liblua5.4-dev libsqlite3-dev libreadline-dev libssl-dev swig
Arch Linux:
$ sudo pacman -Sy lua sqlite swig openssl libgit2
然后使用配置好的QtCreator环境即可编译。
如果你不想用Qt安装器的话,可以用包管理器安装依赖,下面仅举例Arch:
$ sudo pacman -S qt6-base qt6-declarative qt6-5compat qt6-multimedia
$ sudo pacman -S cmake lua sqlite swig openssl swig
然后可以用命令行编译:
$ mkdir build && cd build
$ cmake ..
$ make -j8
如果你使用 Nix/NixOs 的话,可以在clone repo后直接使用 nix flake 构建:
$ git clone https://github.com/Notify-ctrl/FreeKill
$ nix build '.?submodules=1'
2.2.4. MacOS#
安装依赖:
$ brew install openssl # 安装OpenSSL
$ brew install libgit2@1.8.3 # 安装libgit2
$ brew install qt6 # 安装qt6
$ brew install cmake # 安装cmake
$ brew install swig # swig
$ brew install lua@5.4.7 # lua
如果libgit2 和lua之前安装过,请将下面路径中的版本号修改为对应的版本号。 安装好依赖后,需要将路径倒入到CMakeLists.txt 中,具体如下:
# ...
set(LIBGIT2_DIR "/opt/homebrew/Cellar/libgit2/1.8.3")
set(LUA_DIR "/opt/homebrew/Cellar/lua/5.4.7")
# ...
include_directories("${LUA_DIR}/include/lua")
include_directories("${LIBGIT2_DIR}/include")
# ...
link_directories("${LIBGIT2_DIR}/lib")
link_directories("${LUA_DIR}/lib")
target_link_libraries(FreeKill PRIVATE git2)
这样cmake就可以自动找到依赖并生成项目了。
生成项目
$ mkdir build && cd build
$ cmake ..
$ make -j8
也可以参考 [CMakeLists.txt.OSX](Qsgs-Fans/FreeKill) 文件。
2.2.5. 编译安卓版#
用Qt安装器装好Android库,然后配置一下android-sdk就能编译了。