- C++ toolchain, either of:
- Xcode Command Line Tools (aka CLT):
sudo xcode-select --install - Xcode IDE: https://developer.apple.com/xcode/
- (not tested) other C++ compilers, e.g. gcc/clang from Homebrew
- Xcode Command Line Tools (aka CLT):
- CMake:
brew install --cask cmakeor get from https://cmake.org/download/ - Optional:
- Ninja:
brew install ninjaor get it from https://github.com/ninja-build/ninja/releases - CCache to speed up recompilation:
brew install ccache
- Ninja:
Clone https://github.com/vcmi/vcmi with submodules. Example for command line:
git clone --recurse-submodules https://github.com/vcmi/vcmi.gitThere're 2 ways to get dependencies automatically.
We use this to produce builds on CI.
Please find detailed instructions here. Note that the link points to the state of the current branch, for the latest release check the same document in the master branch.
On the step where you need to replace PROFILE, choose:
- if you're on an Intel Mac:
macos-intel - if you're on an Apple Silicon Mac:
macos-arm
- Install Homebrew
- Install dependencies, execute from the repo root:
brew bundle.
Possible customizations:
minizipis installed by default, but you can also useminizip-nginsteadffmpegis installed by default, but you can also use any earlier version likeffmpeg@4insteadqt(Qt 6) is installed by default, but you can also useqt@5instead
This applies only to Xcode-based toolchain. If xcrun -f clang prints errors, then use either of the following ways:
- select an Xcode instance from Xcode application - Preferences - Locations - Command Line Tools
- use
xcode-selectutility to set Xcode or Xcode Command Line Tools path, example:sudo xcode-select -s /Library/Developer/CommandLineTools - set
DEVELOPER_DIRenvironment variable pointing to Xcode or Xcode Command Line Tools path, example:export DEVELOPER_DIR=/Applications/Xcode.app
Note that if you wish to use Qt Creator or CLion IDE, you should skip this step and configure respective variables inside the IDE. Or you could create a CMake preset to avoid manual configuration.
The following walkthrough lists only the bare minimum of required CMake options.
- In Terminal
cdto the source code directory - Start assembling CMake invocation: type
cmake -S . -B BUILD_DIRwhere BUILD_DIR can be any path, don't press Return - Decide which CMake generator you want to use:
- Xcode IDE (if you have installed it): pass
-G Xcode - Ninja (if you have installed it): pass
-G Ninja - Makefiles: no extra option needed or pass
-G 'Unix Makefiles'
- Xcode IDE (if you have installed it): pass
- If you picked Makefiles or Ninja, pick desired build type - either of
Debug/RelWithDebInfo/Release/MinSizeRel- and pass it inCMAKE_BUILD_TYPEoption, example:-D CMAKE_BUILD_TYPE=Debug. If you use don't pass this option,RelWithDebInfowill be used. - Next step depends on the dependency manager you have picked:
- Conan: pass
--toolchain conan-generated/conan_toolchain.cmake(or viaCMAKE_TOOLCHAIN_FILEvariable) where conan-generated must be replaced with your directory choice - Homebrew: if you installed any non-default formula (the one that has
@likeqt@5), you need to pass-D "CMAKE_PREFIX_PATH="variable. Multiple values must be separated with;(semicolon), example:-D "CMAKE_PREFIX_PATH=$(brew --prefix qt@5);$(brew --prefix ffmpeg@4)"
- Conan: pass
- Now press Return
You must also install game files to be able to run the built version, see Installation on macOS.
Open VCMI.xcodeproj from the build directory, select vcmiclient scheme and hit Run (Cmd+R). To build Launcher, select vcmilauncher scheme instead.
cmake --build <path to build directory>
- If using Makefiles generator, you'd want to utilize all your CPU cores by appending
-- -j$(sysctl -n hw.ncpu)to the above - If using Xcode generator, you can also choose which configuration to build by appending
--config <configuration name>to the above, example:--config Debug
You can run binaries from your IDE or directly from the bin directory:
- BUILD_DIR/bin/vcmilauncher
- BUILD_DIR/bin/vcmiclient
- BUILD_DIR/bin/vcmiserver
- BUILD_DIR/bin/vcmimapeditor