Echo Writes Code

crucible

Type Name
tree cmake
tree executables
tree issues
tree libraries
blob CMakeLists.txt
blob CMakePresets.json
blob README.md

Crucible

Crucible is a cross-platform, all-in-one framework for building C++ software, mainly targeted at multimedia applications, video games, and scientific computing.

Components

Crucible is broken into a handful of separate libraries, each having a specific function:

  • crucible-core contains fundamental building blocks that the rest of the framework requires to function. This includes things like data structures, memory management, filesystem access, error handling, and debugging tools.
  • crucible-test is a unit testing system, both for use by applications and for testing Crucible itself. Test cases are written in standard C++, and there is an auto-registration system to minimize boilerplate.

Building

These instructions show how to build Crucible on the command line. To build using an IDE, consult your IDE's documentation about CMake projects.

Dependencies

To build this version of Crucible, you will need the following tools:

  • One of the following supported compilers:
    • Clang (or AppleClang) >= 14.0
    • GCC >= 11.0
    • MSVC >= 19.33
  • CMake >= 3.23

Other compilers or older versions of the supported compilers may or may not work with no changes, but are not supported.

Supported targets

Crucible is regularly built and tested on various versions of macOS, Ubuntu, and Windows in a few different hardware configurations. Similar systems should either work out of the box or require minimal modification.

Configuring the build system

Before building, CMake needs to scan the system to determine what compilers are available, what operating system the build will target, etc. This will generate a set of build files that contain the actual build system.

While it is possible to configure the build by hand, it is recommended to use a build preset unless you have a specific reason not to. There are two build presets currently available: development (for debug builds) and release (for optimized builds).

To configure a build using the release preset, assuming the Crucible repository has been cloned to ~/Repositories/crucible and you want the build directory to be at ~/Builds/crucible/release, run the following command:

cmake --preset=release -S ~/Repositories/crucible -B ~/Builds/crucible/release

Running the build system

Once the build system has been generated, you can execute it to build Crucible. The easiest way to do this is to let CMake do it for you with the following command (again assuming that your build tree is at ~/Builds/crucible/release):

cmake --build ~/Builds/crucible/release

Running the test suite

Crucible has a comprehensive test suite that is integrated with the build system through the CTest framework that comes with CMake. The best way to run the test suite is with the following command (using the ~/Builds/crucible/release directory from the previous examples again):

ctest --test-dir=~/Builds/crucible/release --output-on-failure

Credits

  • Created & developed by bravelytyped