-
Notifications
You must be signed in to change notification settings - Fork 1
02. Requirements and Building
To use this code you require a modern C++20 compiler. In the early days all it required was C++11 and much of it still does but with 2.0.0.0 I have started to use C++20 features.
Over the years developing this library, I have used this code successfully in MSVC 2013, 2015, 2017, 2019 and 2022 (32bit and 64bit). It is recommended that you use MSVC 2022 Build Tools or newer.
I also know that most of this code works in Embarcadero’s C++ Builder 10.x as long as you select the Win32 Clang compiler option. Preferably use Embarcadero C++ Builder 12.2 or newer, with the Win64X toolchain.
I frequently use Qt Creator with MSVC 2022 providing the backend tool chain but am confident this code will also work in MinGW based on GCC 4.8 or greater as you long as you build the code and dependencies accordingly.
This code has been compiled with GCC 11.4 and greater.
Again I have used this code in Qt Creator on Linux with no issues. I have also used much of this code with ARM devices as well.
I have also successfully compiled much of this code for use on a build of Debian 9.8, with Linux Kernel 4.19 on Freescale i.MX6q ARM devices.
I have not tried building on Mac OS but as this code compiles fine with Clang on Windows and Linux it should be relatively straightforward to make it compile on Mac OS.
This code depends, in places, on a few third-party open source libraries. I have tried to minimise the use of such libraries and where possible stick to standard C++ but sometimes it is unavoidable.
Perhaps the biggest dependency in this project is Boost. I have built with versions of Boost 1.57 and greater. Currently I am using Boost 1.69. Boost is used for the underlying ASIO objects used by this libraries ASIO network classes. It also uses Boost Filesystem and some other useful Boost utilities.
The serialisation code in this library makes use of Cereal, which is a library very similar to Boost’s serialisation library and is also API compatible. However, I chose Cereal as it is slightly more light-weight and has better performance and better built-in archive support than Boost. This header-only library is included as part of the CoreLibrary code.
Loki is an open-source library that is quite old now but provides some nice code. In particular it has a very robust implementation of a singleton using template meta programming techniques and various other tricks. This gets used in CoreLibrary to help facilitate the debug log singleton. This header-only library is included as part of the CoreLibrary code.
CoreLibrary also supports serialisation by way of Google Protocol Buffers . This is optional. If you don’t have the protobuf library and don’t make use of this code in my library then you won’t notice anything untoward.
If you want to compile and run the unit tests you need Google Test. The CMakeLIsts.txt for the unit tests should take care of obtaining Google Test for you.
First obtain the required dependencies listed above, following the provided links. Boost, Google Protocol Buffers and Google Test all have static and/or dynamic libraries that require being built for your chosen compiler and platform.
All the code included in this project is licensed under the terms of LGPL 3.0 and the relevant documentation for this can be found at the top of each source file and in the LICENSE text file.
The code is the work of Duncan Crutchley.
📧 Email me: email me
Copyright (C) 2014 onwards, Duncan Crutchley.