{"id":21486222,"url":"https://github.com/hardcode3/imgui_opengl_linear_algebra_cmake_starter","last_synced_at":"2026-05-09T06:35:02.343Z","repository":{"id":172036580,"uuid":"648749851","full_name":"Hardcode3/imgui_opengl_linear_algebra_cmake_starter","owner":"Hardcode3","description":"A cmake starter using Imgui - Imnodes with OpenGL and some linear algebra libraries","archived":false,"fork":false,"pushed_at":"2023-06-03T13:47:27.000Z","size":2103,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-25T02:44:51.100Z","etag":null,"topics":["bash-script","cmake","cpp","doxygen-documentation","eigen3","gitmodules","glfw","glm","imgui","imnodes","implot","linear-algebra","mit-license","opengl"],"latest_commit_sha":null,"homepage":"https://github.com/Hardcode3/imgui_opengl_linear_algebra_cmake_starter","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Hardcode3.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-06-02T18:02:35.000Z","updated_at":"2023-06-27T17:50:30.000Z","dependencies_parsed_at":null,"dependency_job_id":"9abcfd36-7ab9-47ff-9283-4cba4950fc50","html_url":"https://github.com/Hardcode3/imgui_opengl_linear_algebra_cmake_starter","commit_stats":{"total_commits":12,"total_committers":2,"mean_commits":6.0,"dds":"0.41666666666666663","last_synced_commit":"1716e71e72978ec74779cf47d3e0af84df1c8722"},"previous_names":["hardcode3/imgui_opengl_linear_algebra_cmake_starter"],"tags_count":0,"template":true,"template_full_name":null,"purl":"pkg:github/Hardcode3/imgui_opengl_linear_algebra_cmake_starter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hardcode3%2Fimgui_opengl_linear_algebra_cmake_starter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hardcode3%2Fimgui_opengl_linear_algebra_cmake_starter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hardcode3%2Fimgui_opengl_linear_algebra_cmake_starter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hardcode3%2Fimgui_opengl_linear_algebra_cmake_starter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Hardcode3","download_url":"https://codeload.github.com/Hardcode3/imgui_opengl_linear_algebra_cmake_starter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hardcode3%2Fimgui_opengl_linear_algebra_cmake_starter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32809830,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-08T08:22:46.396Z","status":"online","status_checked_at":"2026-05-09T02:00:06.633Z","response_time":123,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["bash-script","cmake","cpp","doxygen-documentation","eigen3","gitmodules","glfw","glm","imgui","imnodes","implot","linear-algebra","mit-license","opengl"],"created_at":"2024-11-23T13:20:00.012Z","updated_at":"2026-05-09T06:35:02.322Z","avatar_url":"https://github.com/Hardcode3.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Imgui - OpenGL - Linear algebra - CMake C++ template\n\n![licence](https://img.shields.io/static/v1?label=Licence\u0026message=MIT\u0026color=yellow)\n![repo size](https://img.shields.io/github/repo-size/Hardcode3/imgui_opengl_linear_algebra_cmake_starter)\n![os support](https://img.shields.io/static/v1?label=Supports\u0026message=Windows|Linux|MacOS\u0026color=blue)\n\nA template project using [Imgui](external/imgui) as graphical user interface ([glfw](external/glfw), [glm](external/glm), [glew](external/glew) and [OpenGL](https://www.opengl.org/)), and [Eigen3](external/eigen) as linear algebra library.\nFor more details about the Apach 2.0 licence, visit [tldrlegal.com](https://tldrlegal.com/license/apache-license-2.0-(apache-2.0)).\nFor more details about the MIT licence, visit [tldrlegal.com](https://tldrlegal.com/license/mit-license)\n\nHere is a screenshot of the application running a custom node editor based on [imnodes](https://github.com/Nelarius/imnodes/tree/d88f99125bb72cdb71b4c27ff6eb7f318d89a4c5):\n![node_editor](assets/screenshots/node_editor.png)\n\n## Dependencies\n\nThe code is build to run with the following libraries (included in the repository under [external](external/)):\n\n- [OpenGL](https://www.opengl.org/) (specification)\n- [GLEW](https://glew.sourceforge.net/)\n- [GLFW](https://www.glfw.org/)\n- [GLM](https://github.com/g-truc/glm)\n- [Eigen](https://eigen.tuxfamily.org/index.php?title=Main_Page) \n- [ImGui](https://github.com/ocornut/imgui) \n- [Imnodes](https://github.com/Nelarius/imnodes/tree/d88f99125bb72cdb71b4c27ff6eb7f318d89a4c5) \n- [Implot](https://github.com/epezent/implot/tree/d87512353495e7760e7fda7566a05beef7627d8f)\n\n## Structure\n\nAn organized structure has been chosen for this template.\n\n- [assets](assets) contains the assets of the project such as fonts and pictures\n- [cmake](cmake) contains a configure file to get the minor and major versions of the current project.\n- [external](external) code goes into external folder at the root of the project.\n- [include](include) gather every self written header file.\n- [mains](mains) contains the main executable i.e. cpp file that drives all the project.\n- [src](src) gather every self written cpp file of the project.\n- [tests](tests) uses CTests to use a test driven approach during the development of the project.\n\n## Cloning\n\nThis repository contains submodules meaning that a recursive cloning can be done.\nTo clone this repository, make sure you have git installed and clone the project into the chosen folder using\n\n```bash\ngit clone --recursive https://github.com/Hardcode3/imgui_opengl_linear_algebra_cmake_starter\n```\n\nYou can also clone the project using\n```bash\ngit clone https://github.com/Hardcode3/imgui_opengl_linear_algebra_cmake_starter\n```\nIn this case, dependencies will be cloned by cmake during the configuration stage.\n\n## Configuring and generating\n\nThe build steps has been tested and runs fine on:\n\n- Microsoft Windows 10, 11\n- MacOSX\n- Linux Ubuntu\n\n### Configuration steps on Linux\n\nConfiguration on Linux requires additional libraries. Generaly, Linux tells you which library is lacking.\nIf required, run the following commands to install needed libraries (detailed in the cmake configuration and building process):\n\n```bash\nsudo apt-get update -y\n```\n\nInstall OpenGL if needed:\n\n```bash\nsudo apt-get install libglu1-mesa-dev freeglut3-dev mesa-common-dev\n```\n\n```bash\nsudo apt-get install -y libxrandr-dev\n```\n\n```bash\nsudo apt-get install -y libxinerama-dev\n```\n\n```bash\nsudo apt-get install -y libxcursor-dev\n```\n\n```bash\nsudo apt-get install -y libxi-dev\n```\n\n### Configuration steps on macOS\n\nThere is no additional configuration step on macOS.\n\n### Configuration steps on Windows\n\nThere is no additional configuration step on Windows.\n\n### General configuration \u0026 build process\n\nMake sure you have CMake installed and inside the clone repo, type:\n\n```bash cmd terminal\nmkdir build\ncd build\ncmake ..\ncmake --build .\n```\n\nOr use CMakeGui for this.\nFor more details, check [cmake.org](https://cmake.org/)\n\nOr launch one of the scripts in the [scritpts folder](scripts):\n\n```bash\ncd scripts\nsh configure_n_build_debug.sh\n```\n\n## CTest integration\nGenerating the RUNTESTS target (CTests) should output something like this if everything is well configured:\n\n```text\n1\u003e    Start 1: imgui_test\n1\u003e1/9 Test #1: imgui_test .......................   Passed    1.19 sec\n1\u003e    Start 2: eigen_test\n1\u003e2/9 Test #2: eigen_test .......................   Passed    0.01 sec\n1\u003e    Start 3: glew_glfw_test\n1\u003e3/9 Test #3: glew_glfw_test ...................   Passed    0.32 sec\n1\u003e    Start 4: glm_test\n1\u003e4/9 Test #4: glm_test .........................   Passed    0.01 sec\n1\u003e    Start 5: glfw_test\n1\u003e5/9 Test #5: glfw_test ........................   Passed    0.84 sec\n1\u003e    Start 6: timer_test\n1\u003e6/9 Test #6: timer_test .......................   Passed    0.16 sec\n1\u003e    Start 7: app_test\n1\u003e7/9 Test #7: app_test .........................   Passed    1.18 sec\n1\u003e    Start 8: csv_test\n1\u003e8/9 Test #8: csv_test .........................   Passed    0.01 sec\n1\u003e    Start 9: utils_str_test\n1\u003e9/9 Test #9: utils_str_test ...................   Passed    0.01 sec\n1\u003e\n1\u003e100% tests passed, 0 tests failed out of 9\n1\u003e\n1\u003eTotal Test time (real) =   3.73 sec\n```\n\nThis is a basis for further unit tests implementation. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhardcode3%2Fimgui_opengl_linear_algebra_cmake_starter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhardcode3%2Fimgui_opengl_linear_algebra_cmake_starter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhardcode3%2Fimgui_opengl_linear_algebra_cmake_starter/lists"}