Files
MinecraftConsoles/COMPILE.md
rtm516 02a5961f39 Move project to CMake (#781)
* Move to cmake

* Move sources to source_groups and ditch more old VS files

* Add BuildVer.h generation

* Break out cmake source lists to platforms

* Don't copy swf files

* Revert audio changes from merge

* Add platform defines

* Match MSBuild flags

* Move BuildVer.h to common include and fix rebuild issue

* Seperate projects properly

* Exclude more files and make sure GameHDD exists

* Missing line

* Remove remaining VS project files

* Update readme and actions

* Use incremental LTCG

* Update workflows

* Update build workflows and output folder

* Disable vcpkg checks

* Force MSVC

* Use precompiled headers

* Only use PCH for cpp

* Exclude compat_shims from PCH

* Handle per-platform source includes

* Copy only current platform media

* Define Iggy libs per platform

* Fix EnsureGameHDD check

* Only set WIN32_EXECUTABLE on Windows

* Correct Iggy libs path

* Remove include of terrain_MipmapLevel

* Correct path to xsb/xwb

* Implement copilot suggestions

* Add clang flags (untested)

* Fix robocopy error checking

* Update documentation

* Drop CMakePresets.json version as we dont use v6 features

* Always cleanup artifacts in nightly even if some builds fail

* Re-work compiler target options

* Move newer iggy dll into redist and cleanup

* Fix typos

* Remove 'Source Files' from all source groups

* Remove old ps1 build scripts
2026-03-17 16:39:22 -05:00

2.3 KiB

Compile Instructions

Visual Studio

  1. Clone or download the repository
  2. Open the repo folder in Visual Studio 2022+.
  3. Wait for cmake to configure the project and load all assets (this may take a few minutes on the first run).
  4. Right click a folder in the solution explorer and switch to the 'CMake Targets View'
  5. Select platform and configuration from the dropdown. EG: Windows64 - Debug or Windows64 - Release
  6. Pick the startup project Minecraft.Client.exe or Minecraft.Server.exe using the debug targets dropdown
  7. Build and run the project:
    • Build > Build Solution (or Ctrl+Shift+B)
    • Start debugging with F5.

Dedicated server debug arguments

  • Default debugger arguments for Minecraft.Server:
    • -port 25565 -bind 0.0.0.0 -name DedicatedServer
  • You can override arguments in:
    • Project Properties > Debugging > Command Arguments
  • Minecraft.Server post-build copies only the dedicated-server asset set:
    • Common/Media/MediaWindows64.arc
    • Common/res
    • Windows64/GameHDD

CMake (Windows x64)

Configure (use your VS Community instance explicitly):

Open Developer PowerShell for VS and run:

cmake --preset windows64

Build Debug:

cmake --build --preset windows64-debug --target Minecraft.Client

Build Release:

cmake --build --preset windows64-release --target Minecraft.Client

Build Dedicated Server (Debug):

cmake --build --preset windows64-debug --target Minecraft.Server

Build Dedicated Server (Release):

cmake --build --preset windows64-release --target Minecraft.Server

Run executable:

cd .\build\windows64\Minecraft.Client\Debug
.\Minecraft.Client.exe

Run dedicated server:

cd .\build\windows64\Minecraft.Server\Debug
.\Minecraft.Server.exe -port 25565 -bind 0.0.0.0 -name DedicatedServer

Notes:

  • The CMake build is Windows-only and x64-only.
  • Contributors on macOS or Linux need a Windows machine or VM to build the project. Running the game via Wine is separate from having a supported build environment.
  • Post-build asset copy is automatic for Minecraft.Client in CMake (Debug and Release variants).
  • The game relies on relative paths (for example Common\Media\...), so launching from the output directory is required.