Windows
==========

本文介绍了在Windows中编译FreeKill的方式。

安装Qt
------------

FreeKill采用最新版Qt6进行构建（具体版本可以看构建CI），因此需要先安装Qt6的开发环境。

建议用 `Qt官方下载器 <https://download.qt.io/official_releases/online_installers/>`_
进行安装。安装工具的操作除了界面是英文之外其实很直观，因此流程不做赘述，
但是建议尽量只下载必要组件而不是全部（大约安装后只占地3GB左右）。
为了编译FreeKill，至少需要安装以下的组件：

- Qt 6: MinGW 11.2.0 64-bit
- Qt 6: Qt5 Compatibility Module
- Qt 6: Shader Tools （为了使用GraphicalEffects）
- Qt 6: Multimedia
- QtCreator
- CMake、Ninja
- OpenSSL最新版（如果你的Qt下载器中没有这一项， `请移步官网下载 <https://openssl-library.org/source/>`_）

其中Qt6的版本是任意的，MinGW的版本也是，都越新越好，但是要清楚开发组发布release时会使用6.5.3版。

利用aqtinstall安装Qt
~~~~~~~~~~~~~~~~~~~~~

这是个QT安装工具，可以在不用Qt安装工具的情况下安装所需工具。缺点是需要自己配置环境变量。

新建个文件夹作为Qt安装路径，并准备好Git bash和python。下列命令在Git Bash中运行，版本号视情况修改。

.. code:: sh

   $ pip install aqtinstall
   $ aqt install-qt windows desktop 6.10.0 win64_mingw -m qtmultimedia qt5compat qtshadertools
   $ aqt install-tool windows desktop tools_mingw1310
   $ aqt install-tool windows desktop tools_cmake
   $ aqt install-tool windows desktop tools_ninja
   $ aqt install-tool windows desktop tools_opensslv3_x64
   $ aqt install-tool windows desktop tools_qtcreator
   $ aqt install-tool windows desktop tools_qtcreator_kits_and_debuggers

这样就在该文件夹下安装好了编译FreeKill所需的Qt模块和工具。QtCreator位于Tools/QtCreator/bin/qtcreator.exe。
其他编译工具的位置需要自己加到PATH，方法见下文。

安装其余依赖
-----------------

从网络上下载并安装swig。
swig `在其官网可以下载 <http://prdownloads.sourceforge.net/swig/swigwin-4.3.1.zip>`_ ,
下载完成之后，还需要将含有swig.exe的文件夹设置到Path环境变量里面去。
打开Windows开始菜单的“环境变量”，在系统变量中找到Path，编辑，添加swig.exe所在的路径。

克隆FreeKill项目
-----------------

新建你想要存放FreeKill项目的文件夹，然后在该文件夹下打开CMD，执行：

.. code-block:: bat

    git clone --recurse-submodules https://github.com/Qsgs-Fans/FreeKill.git

编译与运行
--------------

接下来使用QtCreator打开项目（选择Repo根目录下的CMakeLists.txt），然后尝试编译。

这时遇到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，执行：

.. code-block:: bat

    windeployqt FreeKill.exe
调整目录下的dll文件直到能运行起来为止（这时可以尝试用CMD直接运行FreeKill.exe，会提示缺少哪些dll文件，
可以从freekill的release版本中把这些文件复制过去），之后就可以在Qt Creator中正常运行和调试了。
