This file should assist you in compiling and running the game.
Note the troubleshooting and FAQ sections.
openage consists of a pure C++ library, libopenage
, and the openage
python package.
We use CMake
for all our building needs.
We wrap CMake
with an optional configure
wrapper script.
You can build the project like a regular CMake
project.
For more build system internals, see doc/buildsystem.md.
Dependencies are needed for:
Dependency list:
C gcc >=7 or clang >=5
CRA python >=3.6
C cython >=0.25
C cmake >=3.16
A numpy
A python imaging library (PIL) -> pillow
RA toml
RA lz4
CR opengl >=3.3
CR libepoxy
CR libpng
R dejavu font
CR eigen >=3
CR freetype2
CR fontconfig
CR harfbuzz >=1.0.0
CR nyan (https://github.com/SFTtech/nyan)
CR O ncurses
C jinja2
CR sdl2
CR sdl2_image
CR opusfile
CRA opus
CRA ogg
S pycodestyle
C pygments
S pylint
CR qt5 >=5.9 (Core, Quick, QuickControls modules)
CR O vulkan
A An installed version of any of the following (wine is your friend).
Other versions _might_ work:
- Age of Empires II: The Conquerors Patch 1.0c
- Age of Empires II: Forgotten Empires
- Age of Empires II HD
There are some prerequisite steps that need to be performed so openage can be built successfully. Those steps vary from platform to platform, and are described below for some of the most common ones:
openage
depends on nyan
, which is the
engine configuration language.
For development, nyan
can be built and used without installation (->
no "make install
"). Just clone the repo somewhere and follow the nyan
build instructions).
Alternatively, openage
can download nyan
automatically. This is
activated with ./configure --download-nyan ...
or cmake -DDOWNLOAD_NYAN=YES ...
.
Only install nyan
when packaging it. You don't need to clobber your
filesystem.
cmake
looks for nyan
in the user package registry
(~/.cmake/packages/nyan/
) and the system package registry
(/usr/lib/cmake/nyan/
) for nyanConfig.cmake
.
If nyan
cannot be found but you know where it is, you can hint the
location of the nyanConfig.cmake
with
-Dnyan_DIR=/directory/where/nyanConfig/is/in/
.
Make sure you have all the dependencies installed.
./configure --help
./configure
./configure --compiler=clang
, ./configure --mode=release --compiler=gcc
make
generates and builds everythingmake run
or bin/run
launches the game. Try bin/run --help
!make test
runs the built-in tests.Disclaimer: Use your distribution package of openage
instead!
Your distro package maintainers do all the nasty work for you,
and will provide you with updates!
./configure --mode=release --compiler=clang --prefix=/usr/local
make
make install
install the game to /usr/local
openage
, it's in /usr/local/bin/openage
./configure
; instead, handle openage like a regular
cmake
project. In doubt, have a look at ./configure
's cmake
invocation.make install DESTDIR=/tmp/your_temporary_packaging_dir
,
which will then be packed/installed by your package manager.I wanna see compiler invocations
make VERBOSE=1
My SDL2_Image
/PythonInterp
/whatever is installed somewhere, but cmake
can't find it!
ccmake
or cmake-gui
in the build directory to see and change config variables.cmake
where to look. Try something along the lines of
./configure -- -DSDL2IMAGE_INCLUDE_DIRS=/whereever/sdl2_image/include/
I get compiler errors about missing header files
I get nonsensical cmake errors like unable to execute /home/user/git/openage/clang++
cmake
, or rather, your usage of it. You probably invoked cmake
directly,
and defined a compiler even though the build directory has already been initialized.
cmake
is a bit "special" in this regard. Simply omit the compiler definitions,
or purge the build directory with rm -rf build bin .bin
.Help, it doesn't work!
Why did you make the simple task of invoking a compiler so incredibly complicated? Seriously. I've been trying to get this pile of utter crap you call a 'build system' to simply do its job for half an hour now, but all it does is sputter unreadable error messages. I hate CMake. I'm fed up with you. Why are you doing this to me? I thought we were friends. I'm the most massive collection of wisdom that has ever existed, and now I HATE YOU. It can't be for no reason. You MUST deserve it.
automake
project, so I can sympathize.openage
involves code generation and the building of Cython
extension modules.Why don't you $proposition
? Your $component
is crap
and would be much better then!
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。