nethack吧 关注:3,586贴子:54,267

回复:如何在 Windows 平台编译 NetHack

取消只看楼主收藏回复

# `0x04` 哪种方法适合我
两种方法实际上各有优劣。使用 Visual Studio 编译要方便很多,最难的部分也就是下载安装功能了。但 VS 本身是一个完整的 IDE,如果你只是想编译的话,其中的大部分功能你都用不上,而光是安装 C++ 核心功能就要占据大量磁盘空间。只选择安装“MSVC C++ x64/x86 生成工具”或许可行,但需要使用开发者命令提示符以及 nmake,而我没有对此方案的可行性进行实验,就不在此详述了。
使用 mingw 编译或许很节省空间,这一套 C/C++ 编译环境也就 1G 左右,但在操作上有很多麻烦问题要解决。如果你对解决这些方面的问题很熟悉,使用它是更节能的选择。


IP属地:河北16楼2024-01-26 14:45
回复
    补档


    IP属地:河北17楼2024-01-26 16:00
    回复
      顺便说说阅读源码的事,在 win 平台 visual studio 很方便,nethack 也提供了现成的 NetHack.sln. 此外,还可以用 compiledb 生成 compile_commands.json,让其他 lsp 也能有较好的体验。只要将 Makefile.mingw32 重命名为 Makefile,在 src 目录下使用 compiledb make 就好。

      只不过这种方法依旧存在一些问题,主要集中在头文件上。部分头文件依旧找不到 symbols,不过一般的 lsp 也已经能根据 compile_commands.json 分析出缺少的符号对应在哪个头文件了。


      IP属地:河北18楼2024-01-26 16:08
      回复
        原本的 mingw32-make 构建方式已不再适用于新版,接下来将介绍平替的新构建方式


        IP属地:河北22楼2024-12-10 12:32
        回复
          # 0 前言
          > 记录于 2024-12-09
          NetHack 又对编译方式进行了调整。使用 MSVC 的构建方式基本不变,但使用 mingw 的构建方式已被替换为 MSYS2(可能也是意识到了之前的那一套真的不好使). 为了不让看到帖子的人在过时内容上浪费时间,本文跟进介绍使用 MSYS2 的构建过程。


          IP属地:河北23楼2024-12-10 12:34
          回复
            # 1 安装 MSYS2 和依赖
            打开源码目录下的 `sys/windows/build-msys2.txt` ,后续步骤都围绕本文件的内容展开。

            首要任务很简单,安装 MSYS2.
            官网 https://www.msys2.org/
            下载安装后启动 MSYS2 终端,长这样:

            根据 build-msys2.txt 的内容,需要安装依赖。实测如果仅需要编译的话不需要安装他列出的那么多包,必要的只有以下两个:
            pacman -S mingw-w64-ucrt-x86_64-gcc
            pacman -S make


            IP属地:河北24楼2024-12-10 12:37
            回复
              # 2 编译
              确保当前工作目录为 src
              cd src
              在 MSYS2 终端依次输入下列命令
              make clean
              make depend
              make
              经过一段时间等待后,最终编译产物输出至源码根目录下的 `package` 目录。可以发现是一个 zip 压缩包(如:nethack-370-win-x64-msys2.zip),将内容解压至任意目录即可运行。


              IP属地:河北25楼2024-12-10 12:37
              回复