{"id":13715043,"url":"https://github.com/ABRG-Models/morphologica","last_synced_at":"2025-05-07T03:31:16.530Z","repository":{"id":41094242,"uuid":"137862983","full_name":"ABRG-Models/morphologica","owner":"ABRG-Models","description":"C++ header-only graphing and data visualization with Modern OpenGL","archived":false,"fork":false,"pushed_at":"2025-04-29T14:51:57.000Z","size":81262,"stargazers_count":292,"open_issues_count":5,"forks_count":35,"subscribers_count":11,"default_branch":"main","last_synced_at":"2025-04-29T15:59:07.700Z","etag":null,"topics":["2d","3d","cplusplus","cplusplus-17","data-visualization","graphics","graphics-engine","graphs","matplotlib","opengl","plotting","simulation","visualization"],"latest_commit_sha":null,"homepage":"https://abrg-models.github.io/morphologica/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ABRG-Models.png","metadata":{"files":{"readme":"README.build.compiler.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-06-19T08:32:21.000Z","updated_at":"2025-04-28T16:30:10.000Z","dependencies_parsed_at":"2023-09-23T00:19:50.251Z","dependency_job_id":"d138db1f-9209-4290-b204-52a55d0b604d","html_url":"https://github.com/ABRG-Models/morphologica","commit_stats":{"total_commits":3180,"total_committers":20,"mean_commits":159.0,"dds":0.4040880503144654,"last_synced_commit":"eb79e4c031603ecc5d54e2e06fe25547a25e32db"},"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ABRG-Models%2Fmorphologica","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ABRG-Models%2Fmorphologica/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ABRG-Models%2Fmorphologica/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ABRG-Models%2Fmorphologica/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ABRG-Models","download_url":"https://codeload.github.com/ABRG-Models/morphologica/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252806425,"owners_count":21807201,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["2d","3d","cplusplus","cplusplus-17","data-visualization","graphics","graphics-engine","graphs","matplotlib","opengl","plotting","simulation","visualization"],"created_at":"2024-08-03T00:00:53.312Z","updated_at":"2025-05-07T03:31:11.516Z","avatar_url":"https://github.com/ABRG-Models.png","language":"C++","funding_links":[],"categories":["Visualization","Recently Updated","Libraries"],"sub_categories":["Mesh tools","[Mar 08, 2025](/content/2025/03/08/README.md)"],"readme":"# Minimum compiler versions\n\nmorphologica makes extensive use of C++-17 language features, and some\noptional use of C++-20 (when building tests/examples, the presence of\nC++-20 is tested for in the CMakeLists.txt). For this reason, there\nare minimum supported versions of common compilers to be able to\ncompile *all* the examples. The general rule is that the compiler should\nprovide full C++-17 support.\n\nNote that some of the headers will have more relaxed compiler\nrequirements. If you are only using a small subset of morphologica\nheaders in your code, you may get away with a compiler that does not\nfulfil the requirements given here.\n\n\n## Tested compiler versions\n\n| OS           | Compiler | Version | Result and reason                        |\n| :-------:    | :------: | :-----: | ---------------------------------------- |\n| Ubuntu 24.04 | g++      | 10.5    | Fail: on constexpr code in morph::Gridct |\n| Ubuntu 24.04 | g++      | 11.4    | Pass (make \u0026\u0026 make test)                 |\n| Ubuntu 24.04 | g++      | 12.3    | Pass (make \u0026\u0026 make test)                 |\n| Ubuntu 24.04 | g++      | 13.2    | Pass (make \u0026\u0026 make test)                 |\n| Ubuntu 24.04 | clang++  | 14.0    | Fail: on colourmaps_mono target (`#include \u003cformat\u003e` problem)  |\n| Ubuntu 24.04 | clang++  | 16.0    | Pass (make \u0026\u0026 make test)                 |\n| Ubuntu 24.04 | clang++  | 18.1    | Pass (make \u0026\u0026 make test)                 |\n\nThe build also succeeds on various versions of Mac OS with\nclang. Entries in the table for clang on Mac are to follow.\n\n## Default compilers on different OS platforms\n\n| OS           | Default Compiler Family | Version | Support |\n| :-------:    | :------:                | :-----: | :--:    |\n| Ubuntu 20.04 | gcc                     | 9       | No      |\n| Ubuntu 20.10 | gcc                     | 10      | No      |\n| Ubuntu 22.04 | gcc                     | 11      | Yes     |\n| Ubuntu 22.10 | gcc                     | 12      | Yes     |\n| Ubuntu 24.04 | gcc                     | 13      | Yes     |\n| Fedora 35    | gcc                     | 11      | Yes     |\n| Fedora 36    | gcc                     | 12      | Yes     |\n| Fedora 37    | gcc                     | 12      | Yes     |\n| Fedora 38    | gcc                     | 13      | Yes     |\n| Fedora 39    | gcc                     | 13      | Yes     |\n| Fedora 40    | gcc                     | 14      | Yes*    |\n\n*Well, probably/hopefully/presumably :)\n\n## Building with clang on Linux\n\nInstall clang (which on Ubuntu provides clang++) and a suitable version of libstdc++.\n\nOn Ubuntu 24, I used `clang-18` and `libstdc++-14-dev` together.\n\nYou then call cmake with\n\n```bash\nmkdir build_clang\ncd build_clang\nCC=clang CXX=clang++ cmake .. # Or maybe CC=clang-18 CXX=clang++-18\nmake\n```\n(You probably don't need CC=clang)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FABRG-Models%2Fmorphologica","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FABRG-Models%2Fmorphologica","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FABRG-Models%2Fmorphologica/lists"}