Compiling xoreos-tools: Difference between revisions

From xoreos Wiki
Jump to navigation Jump to search
(→‎Libraries: Add Boost to the apt-get command line)
 
(10 intermediate revisions by the same user not shown)
Line 4: Line 4:
==Compiler and build system==
==Compiler and build system==


xoreos-tools is written in C++, so a C++ compiler, like [https://gcc.gnu.org/ GCC] or [http://clang.llvm.org/ clang] is required. It has two build systems: [https://en.wikipedia.org/wiki/GNU_build_system Autotools] ([https://www.gnu.org/software/autoconf/ Autoconf], [https://www.gnu.org/software/automake/ Automake] and [https://www.gnu.org/software/libtool/ Libtool]) and [https://en.wikipedia.org/wiki/CMake CMake]. Use whichever you feel more comfortable with.
xoreos-tools is written in C++, so a C++ compiler, like [https://gcc.gnu.org/ GCC] or [http://clang.llvm.org/ clang] is required. xoreos-tools follows the C++14 standard. It has two build systems: [https://en.wikipedia.org/wiki/GNU_build_system Autotools] ([https://www.gnu.org/software/autoconf/ Autoconf], [https://www.gnu.org/software/automake/ Automake] and [https://www.gnu.org/software/libtool/ Libtool]) and [https://en.wikipedia.org/wiki/CMake CMake]. Use whichever you feel more comfortable with.


===GNU/Linux===
===GNU/Linux===
Line 12: Line 12:
  <nowiki>apt-get install libc6-dev g++ make autoconf automake libtool gettext</nowiki>
  <nowiki>apt-get install libc6-dev g++ make autoconf automake libtool gettext</nowiki>


On other distributions, it should work similarily.  
On Arch Linux, you can install the necessary packages with
 
<nowiki>sudo pacman -S base-devel cmake</nowiki>
 
On other distributions, it should work similarily.


===Windows===
===Windows===


Since Visual Studio does not work with autotools, you have to use the CMake build system if you want to compile xoreos with Visual Studio. If you're using [http://www.mingw.org/ MinGW], however, you're free to choose either build system.
Since Visual Studio does not work with autotools, you have to use the CMake build system if you want to compile xoreos with Visual Studio. If you're using [http://www.mingw.org/ MinGW], however, you're free to choose either build system.
On Windows, it is recommended that instead of Visual Studio, you use [https://msys2.github.io/ MSYS2] together with [https://mingw-w64.org/ Mingw-w64] (which can produce both 32-bit and 64-bit binaries). MSYS2 provides a package manager, with which you can install xoreos' library dependencies very easily.
You can install the 32-bit toolchain in MSYS2 with
<nowiki>pacman -S base-devel git mingw-w64-i686-toolchain mingw-w64-i686-cmake</nowiki>
You can install the 64-bit toolchain in MSYS2 with
<nowiki>pacman -S base-devel git mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmake</nowiki>


==Libraries==
==Libraries==
Line 24: Line 38:
* [https://en.wikipedia.org/wiki/Iconv iconv]
* [https://en.wikipedia.org/wiki/Iconv iconv]
* [http://www.zlib.net/ zlib] (>= 1.2.3.4)
* [http://www.zlib.net/ zlib] (>= 1.2.3.4)
* [http://tukaani.org/xz/ liblzma] (>= 5.0.5)
* [http://www.xmlsoft.org/ libxml2] (>= 2.8.0)
* [http://www.xmlsoft.org/ libxml2] (>= 2.8.0)
* [http://www.boost.org/ Boost] (>= 1.53.0)
* [http://www.boost.org/ Boost] (>= 1.53.0)
Line 30: Line 45:
** Boost.System
** Boost.System
** Boost.Filesystem
** Boost.Filesystem
** Boost.Regex
** Boost.Hash
** Boost.Function
** Boost.Bind
** Boost.Uuid
** Boost.Uuid
** Boost.Smart_Ptr
** Boost.Smart_Ptr
** Boost.ScopeExit
** Boost.ScopeExit
** Boost.Atomic
** Boost.Locale
** Boost.Locale


On Debian-based GNU/Linux distribution (including Ubuntu), you should be able to install these libraries and their development packages with
On Debian-based GNU/Linux distribution (including Ubuntu), you should be able to install these libraries and their development packages with


  apt-get install zlib1g-dev libxml2-dev libboost-all-dev
  apt-get install zlib1g-dev liblzma-dev libxml2-dev libboost-all-dev
 
On Arch Linux, you can install these dependencies with
 
sudo pacman -S zlib xz libxml2 boost boost-libs
 
Other GNU/Linux distributions should work similarily.


Other GNU/Linux distributions should work similarily. Windows users have to visit each website manually and download a precompiled version, or, if not available, download the source and compile the library themselves.
On Windows, if you're using MSYS2, you can install these dependencies for 32-bit with


==Compiling xoreos==
  pacman -S mingw-w64-i686-zlib mingw-w64-i686-xz mingw-w64-i686-libxml2 mingw-w64-i686-boost


Make you have your compiler, build system and libraries installed correctly. Then open a terminal and change into the directory of your sources.
On Windows, if you're using MSYS2, you can install these dependencies for 64-bit with
 
  pacman -S mingw-w64-x86_64-zlib mingw-w64-x86_64-xz mingw-w64-x86_64-libxml2 mingw-w64-x86_64-boost
 
Windows users not using MSYS2 will have to visit each website manually and download a precompiled version, or, if not available, download the source and compile the library themselves.
 
==Compiling xoreos-tools==
 
Make sure you have your compiler, build system and libraries installed correctly. Then open a terminal and change into the directory of your sources.


===autotools===
===autotools===
Line 82: Line 106:


The binaries can then be found in the bin subdirectory.
The binaries can then be found in the bin subdirectory.
This builds xoreos-tools without any optimizations, so you might want to use
<nowiki>cmake -DCMAKE_BUILD_TYPE=Release . && make</nowiki>
(optimized, no debug information) or
<nowiki>cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo . && make</nowiki>
(optimized, with debug information) instead.


Please read [http://www.cmake.org/runningcmake/ Running CMake] on the CMake website for in-depth information on invoking CMake.
Please read [http://www.cmake.org/runningcmake/ Running CMake] on the CMake website for in-depth information on invoking CMake.
==Unit tests==
On both build systems,
<nowiki>make check</nowiki>
compiles and runs our unit tests.

Latest revision as of 13:29, 26 August 2020

This page gives a few tips and pointers on how to compile xoreos-tools on various platforms.

Compiler and build system

xoreos-tools is written in C++, so a C++ compiler, like GCC or clang is required. xoreos-tools follows the C++14 standard. It has two build systems: Autotools (Autoconf, Automake and Libtool) and CMake. Use whichever you feel more comfortable with.

GNU/Linux

On Debian-based distributions (including Ubuntu), you should be able to install the required compiler and build system packages with

apt-get install libc6-dev g++ make autoconf automake libtool gettext

On Arch Linux, you can install the necessary packages with

sudo pacman -S base-devel cmake

On other distributions, it should work similarily.

Windows

Since Visual Studio does not work with autotools, you have to use the CMake build system if you want to compile xoreos with Visual Studio. If you're using MinGW, however, you're free to choose either build system.

On Windows, it is recommended that instead of Visual Studio, you use MSYS2 together with Mingw-w64 (which can produce both 32-bit and 64-bit binaries). MSYS2 provides a package manager, with which you can install xoreos' library dependencies very easily.

You can install the 32-bit toolchain in MSYS2 with

pacman -S base-devel git mingw-w64-i686-toolchain mingw-w64-i686-cmake

You can install the 64-bit toolchain in MSYS2 with

pacman -S base-devel git mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmake

Libraries

xoreos-tools uses the following libraries to function:

  • iconv
  • zlib (>= 1.2.3.4)
  • liblzma (>= 5.0.5)
  • libxml2 (>= 2.8.0)
  • Boost (>= 1.53.0)
    • Boost.Utility
    • Boost.StringAlgo
    • Boost.System
    • Boost.Filesystem
    • Boost.Uuid
    • Boost.Smart_Ptr
    • Boost.ScopeExit
    • Boost.Locale

On Debian-based GNU/Linux distribution (including Ubuntu), you should be able to install these libraries and their development packages with

apt-get install zlib1g-dev liblzma-dev libxml2-dev libboost-all-dev

On Arch Linux, you can install these dependencies with

sudo pacman -S zlib xz libxml2 boost boost-libs

Other GNU/Linux distributions should work similarily.

On Windows, if you're using MSYS2, you can install these dependencies for 32-bit with

 pacman -S mingw-w64-i686-zlib mingw-w64-i686-xz mingw-w64-i686-libxml2 mingw-w64-i686-boost

On Windows, if you're using MSYS2, you can install these dependencies for 64-bit with

 pacman -S mingw-w64-x86_64-zlib mingw-w64-x86_64-xz mingw-w64-x86_64-libxml2 mingw-w64-x86_64-boost

Windows users not using MSYS2 will have to visit each website manually and download a precompiled version, or, if not available, download the source and compile the library themselves.

Compiling xoreos-tools

Make sure you have your compiler, build system and libraries installed correctly. Then open a terminal and change into the directory of your sources.

autotools

Type

./autogen.sh && ./configure && make

The binaries can then be found in the src subdirectory.

Optional, non-conventional ./configure flags:

  • --with-werror  
Compile with -Werror
  • --without-warnings  
Compile without the extra warnings enabled
  • --with-lto  
Compile with link-time optimization


CMake

Type

cmake . && make

The binaries can then be found in the bin subdirectory.

This builds xoreos-tools without any optimizations, so you might want to use

cmake -DCMAKE_BUILD_TYPE=Release . && make

(optimized, no debug information) or

cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo . && make

(optimized, with debug information) instead.

Please read Running CMake on the CMake website for in-depth information on invoking CMake.

Unit tests

On both build systems,

make check

compiles and runs our unit tests.