traintastic/BUILDING.md
Filippo Gentile d3bbfac40e Add MinGW section to BUILDING.md
Added instructions specific to MinGW.
Linked GDB online documentation.
2023-02-24 10:14:04 +01:00

3.9 KiB

Traintastic - Build instructions

For generic project information, see README.md.

Build Traintastic client

Requirements

  • C++ compiler: MSVC, MinGW, GCC or clang.
  • CMake 3.9+
  • Qt 5.12+ or Qt 6

Common

Create a build directory:

  • From the project root go into the client directory: cd client
  • Create a build directory: cmake -E make_directory build
  • Go into the created build directory: cd build

Windows (VS2019, MSVC)

In the build directory:

  • Configure CMake: cmake ../ -G "Visual Studio 16 2019" -A x64 -DCMAKE_BUILD_TYPE=Release
  • Build traintastic-client: cmake --build . --config Release

Windows (MinGW)

NOTE: GCC 8.1 has a bug in <filesystem> standard header which prevents compilation To avoid build errors update to a newer version, e.g. MinGW 11.2.0

In the build directory:

  • Configure CMake: cmake ../ -G "MinGW Makefiles" -A x64 -DCMAKE_BUILD_TYPE=Release
  • Build traintastic-client: cmake --build . --config Release

Debug builds (Client and Server)

For Debug builds use -DCMAKE_BUILD_TYPE=Debug Turning off some optimizations might help debugging when stepping inside source code. Set CMAKE_CXX_FLAGS_DEBUG="-g -Og"

GDB takes a lot to start debugging because both client and server load many DLL on Windows. To mitigate that turn off auto loading of shared library symbols BEFORE starting the inferior with GDB command:

set auto-solib-add off

If you need to step into some library code (for example Qt libraries in Client) you can load a library by running GDB command:

sharedlibrary LIBRARY_NAME This must be done AFTER inferior has started, symbol loading is delayed until fisrt breakpoint is hit or at break command

More info in GDB Documentation

Linux

In the build directory:

  • Configure CMake: cmake ../ -DCMAKE_BUILD_TYPE=Release
  • Build traintastic-client: cmake --build . --config Release

macOS

In the build directory:

  • Configure CMake: cmake ../ -DCMAKE_BUILD_TYPE=Release -DQt5_DIR=/path/to/Qt/5.15.2/clang_64/lib/cmake/Qt5
  • Build traintastic-client: cmake --build . --config Release

Building Traintastic server

Requirements

  • C++ compiler: MinGW, GCC or Clang (MSVC doesn't work yet)
  • CMake 3.9+
  • boost (Linux only)
  • liblua5.3 (non Windows only)
  • libarchive (non Windows only)
  • libsystemd (Linux only)

Common

Create a build directory:

  • From the project root go into the server directory: cd server
  • Create a build directory: cmake -E make_directory build
  • Go into the created build directory: cd build

Windows (VS2019, clang)

In the build directory:

  • Configure CMake: cmake ../ -G "Visual Studio 16 2019" -A x64 -T ClangCL -DCMAKE_BUILD_TYPE=Release
  • Build traintastic-server: cmake --build . --config Release --target traintastic-server

Windows (MinGW)

NOTE: GCC 8.1 has a bug in <filesystem> standard header which prevents compilation To avoid build errors update to a newer version, e.g. MinGW 11.2.0

In the build directory:

  • Configure CMake: cmake ../ -G "MinGW Makefiles" -A x64 -DCMAKE_BUILD_TYPE=Release
  • Build traintastic-client: cmake --build . --config Release

For Debug builds see Client section of MinGW

Linux

In the build directory:

  • Configure CMake: cmake ../ -DCMAKE_BUILD_TYPE=Release
  • Build traintastic-server: cmake --build . --config Release --target traintastic-server

macOS

In the build directory:

  • Configure CMake: cmake ../ -DCMAKE_BUILD_TYPE=Release
  • Build traintastic-server: cmake --build . --config Release --target traintastic-server

Build Traintastic manual

Requirements

  • Python 3.6+ (older versions untested)
  • cmarkgfm (pip3 install cmarkgfm)

All platforms

  • From the project root go into the manual directory: cd manual
  • Run the build script: python3 builddoc.py html-single-page --output-dir build