https://github.com/abrg-models/morphologica
C++ header-only graphing and data visualization with Modern OpenGL
https://github.com/abrg-models/morphologica
2d 3d cplusplus cplusplus-17 data-visualization graphics graphics-engine graphs matplotlib opengl plotting simulation visualization
Last synced: 22 days ago
JSON representation
C++ header-only graphing and data visualization with Modern OpenGL
- Host: GitHub
- URL: https://github.com/abrg-models/morphologica
- Owner: ABRG-Models
- License: apache-2.0
- Created: 2018-06-19T08:32:21.000Z (almost 7 years ago)
- Default Branch: main
- Last Pushed: 2025-02-15T16:56:59.000Z (2 months ago)
- Last Synced: 2025-02-15T18:15:15.522Z (2 months ago)
- Topics: 2d, 3d, cplusplus, cplusplus-17, data-visualization, graphics, graphics-engine, graphs, matplotlib, opengl, plotting, simulation, visualization
- Language: C
- Homepage: https://abrg-models.github.io/morphologica/
- Size: 56.6 MB
- Stars: 273
- Watchers: 14
- Forks: 30
- Open Issues: 18
-
Metadata Files:
- Readme: README.build.compiler.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Minimum compiler versions
morphologica makes extensive use of C++-20. For this reason, there
are minimum supported versions of common compilers to be able to
compile the examples and any program against morphologica. The general rule is that the compiler should
provide full C++-20 support.Note that some of the headers will have more relaxed compiler
requirements. If you are only using a small subset of morphologica
headers in your code, you may get away with a compiler that does not
fulfil the requirements given here.## Tested compiler versions
| OS | Compiler | Version | Result and reason |
| :-------: | :------: | :-----: | ---------------------------------------- |
| Ubuntu 24.04 | g++ | 10.5 | Fail: on constexpr code in morph::Gridct |
| Ubuntu 24.04 | g++ | 11.4 | Pass (make && make test) |
| Ubuntu 24.04 | g++ | 12.3 | Pass (make && make test) |
| Ubuntu 24.04 | g++ | 13.2 | Pass (make && make test) |
| Ubuntu 24.04 | clang++ | 14.0 | Fail: on colourmaps_mono target (`#include ` problem) |
| Ubuntu 24.04 | clang++ | 15.0 | Fail: (constexpr problems) |
| Ubuntu 24.04 | clang++ | 16.0 | Pass (make && make test) |
| Ubuntu 24.04 | clang++ | 17 | Pass (make && make test) |
| Ubuntu 24.04 | clang++ | 18.1 | Pass (make && make test) |The build also succeeds on various versions of Mac OS with
clang. Entries in the table for clang on Mac are to follow.## Default compilers on different OS platforms
| OS | Default Compiler Family | Version | Support |
| :-------: | :------: | :-----: | :--: |
| Ubuntu 20.04 | gcc | 9 | No |
| Ubuntu 20.10 | gcc | 10 | No |
| Ubuntu 22.04 | gcc | 11 | Yes |
| Ubuntu 22.04 | gcc | 13 | Yes |
| Ubuntu 22.10 | gcc | 12 | Yes |
| Ubuntu 24.04 | gcc | 13 | Yes |
| Ubuntu 24.04 | gcc | 14 | Yes |
| Fedora 35 | gcc | 11 | Yes |
| Fedora 36 | gcc | 12 | Yes |
| Fedora 37 | gcc | 12 | Yes |
| Fedora 38 | gcc | 13 | Yes |
| Fedora 39 | gcc | 13 | Yes |
| Fedora 40 | gcc | 14 | Yes* |*Well, probably/hopefully/presumably :)
## Building with clang on Linux
Install clang (which on Ubuntu provides clang++) and a suitable version of libstdc++.
On Ubuntu 24, I used `clang-18` and `libstdc++-14-dev` together.
You then call cmake with
```bash
mkdir build_clang
cd build_clang
CC=clang CXX=clang++ cmake .. # Or maybe CC=clang-18 CXX=clang++-18
make
```
(You probably don't need CC=clang)