Compiling (OpenApoc)

From UFOpaedia
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Building

OpenApocalypse is built leveraging a number of libraries - to provide needed functionality (and save us the time of implementing it ourselves badly)

  • SDL2
  • Boost - specifially the 'locale' library, used for localisation, 'program-options' for settings management, and 'filesystem'.
  • Libunwind - debug backtracing on linux - not needed on windows.

The following libraries are also used, but are shipped as submodules in the repository and directly included in the build, so you don't need to install these dependencies to build or use openapoc.

Windows

  1. Checkout OpenApoc from GitHub.
  2. If you are using the GitHub client for Windows, the submodules should already be setup at first checkout. If not using the github client, or if the submodules have been updated, run the following commands in the 'git shell' from the root of the OpenApoc repository. This should reset the submodule checkouts to the latest versions (NOTE: This will overwrite any changes to code in the dependencies/ directory).
    git submodule update --init --recursive
  3. All the other dependencies (Boost, SDL2) need to be supplied separately. Install Vcpkg and run the following command:
    vcpkg install sdl2 boost-locale boost-system boost-program-options boost-filesystem boost-uuid boost-crc
  4. Copy the original XCom:Apocalypse .iso file into the "data/" directory. This could also be a directory containing all the extracted files from the CD, and it should be named the same (IE the directory should be data/cd.iso/). This is used during the build to extract some data tables.
  5. Open the Git directory in Visual Studio (if you don't have an Open Folder option, generate a project from CMake).
  6. Visual Studio should automatically detect and configure CMake appropriately. To add your Vcpkg dependencies, edit your CMake Settings file and add:
    "variables": [
        {
            "name": "CMAKE_TOOLCHAIN_FILE",
            "value": "<path to vcpkg>\\scripts\\buildsystems\\vcpkg.cmake"
        }
    ]
  7. If you get errors, clear your cache from the CMake menu and generate again.
  8. Build (Release/Debug x86/x64 should all work). Release is recommended as Debug is very slow.
  9. When running from the Visual Studio UI, the working directory is set to the root of the project, so the data folder should already be in the right place. If you want to run outside of Visual Studio, you need to copy the whole 'data' folder (including the cd.iso file) into the folder openapoc.exe resides in.

Linux

(Tested on Ubuntu 16.04)

  1. Install the following packages:
    sudo apt-get install libsdl2-dev cmake build-essential git libunwind8-dev libboost-locale-dev libboost-filesystem-dev libboost-system-dev libboost-program-options-dev qtdeclarative5-dev
  2. Checkout OpenApoc from GitHub.
  3. Fetch the dependencies from git with the following terminal command (run from the just-created OpenApoc folder).
    git submodule update --init --recursive
  4. Copy the cd.iso file to the 'data' directory under the repository root (Note - despite dosbox having good linux support, the steam version of X-Com Apocalypse will only install if Steam Play is enabled).
    cp /path/to/cd.iso data/
  5. Create a subdirectory ('build' in this example) in the OpenApoc checkout directory, and from that use cmake to configure OpenApoc.
    cd /path/to/OpenApoc
    mkdir build
    cd build
    cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
  6. This cmake command will fail if we're missing a dependency, or your system is for some other reason unable to build - if you have any issues please contact us (see above for links).
  7. Build the project with the following command.
    make -j4
  8. This should create a directory 'bin' under the build directory, with the 'OpenApoc' executable file. OpenApoc by default expects the data folder to be in the current working directory, so running the executable from the root of the git checkout should work.
    ./build/bin/OpenApoc