{"id":20364500,"url":"https://github.com/rezonality/mutils","last_synced_at":"2025-04-12T04:45:30.563Z","repository":{"id":38795655,"uuid":"205317112","full_name":"Rezonality/mutils","owner":"Rezonality","description":"A library of shared C++ components, in a handy Modern CMake wrapper.","archived":false,"fork":false,"pushed_at":"2023-02-02T13:28:17.000Z","size":22019,"stargazers_count":24,"open_issues_count":0,"forks_count":11,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-12T04:45:16.008Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Rezonality.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2019-08-30T06:15:26.000Z","updated_at":"2025-01-23T05:45:44.000Z","dependencies_parsed_at":"2024-11-15T00:22:25.965Z","dependency_job_id":null,"html_url":"https://github.com/Rezonality/mutils","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rezonality%2Fmutils","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rezonality%2Fmutils/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rezonality%2Fmutils/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rezonality%2Fmutils/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Rezonality","download_url":"https://codeload.github.com/Rezonality/mutils/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248519472,"owners_count":21117757,"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":[],"created_at":"2024-11-15T00:12:15.033Z","updated_at":"2025-04-12T04:45:30.539Z","avatar_url":"https://github.com/Rezonality.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"[MUtils](https://github.com/Rezonality/MUtils) - Useful C++\n===================================================================================================\n\n![Builds](https://github.com/Rezonality/mutils/workflows/Builds/badge.svg)\n[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/Rezonality/zep/blob/master/LICENSE)\n[![codecov](https://codecov.io/gh/Rezonality/MUtils/branch/master/graph/badge.svg)](https://codecov.io/gh/Rezonality/MUtils)\n[![Codacy Badge](https://app.codacy.com/project/badge/Grade/8bb47022b078477186c6941140e0f62c)](https://www.codacy.com/gh/Rezonality/mutils/dashboard?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=Rezonality/mutils\u0026amp;utm_campaign=Badge_Grade)\n[![Codacy Badge](https://app.codacy.com/project/badge/Coverage/8bb47022b078477186c6941140e0f62c)](https://www.codacy.com/gh/Rezonality/mutils/dashboard?utm_source=github.com\u0026utm_medium=referral\u0026utm_content=Rezonality/mutils\u0026utm_campaign=Badge_Coverage)\n\nThis project contains useful things that are often needed in bigger c++ projects.  If something is in here, it helps save time when teaching coding or building apps.  The point of this big static library and associated modules is that when you have built it, you can make apps quickly without figuring out how to compile and get everything to work cross platform (On Windows, Mac and Linux)\n\nThis library now uses vcpkg to simplify cross platform building of all the dependent packages.  Running prebuild will create a parallel folder containing all the useful bits.  Some libraries that are not part of vcpkg are still built by MUtils, but the majority are created in the vcpkg.  The following step may take a little time, but is only done once:\n\n``` bash\nprebuild.bat OR prebuild.sh\n```\n\nThe MUtils build is pretty standard, and makes useful shared code, as well as installing various pieces.\nIt is built like this:\n\n``` bash\nconfig.bat OR config.sh\nbuild.bat OR build.sh\n```\n\nNow in your project CMakeLists.txt, you can add the following to reference the library and pull in all the header paths.  Note there are no include/library defines; the target_link_libraries is enough to pull all the necessary things in.\n\n``` cmake\nfind_package(MUtils REQUIRED)\n...\ntarget_link_libraries(MyApp PRIVATE MUtils::MUtils)\n```\n\n## External Projects\nThe following external projects are in the library for convenient access.  Look in their folders for more information.  These libraries are all cross platform - you shouldn't be using ones that arent.  There are a couple projects that duplicate functionality; this is mostly to maintain backward compatibility if I've used another version.  Some of these components are installed on the machine when you run 'prebuild.bat/sh'.  Most of them are built into the static MUtils library.\n\n*  Catch2 - better unit testing that gtest\n*  Chibi - a scheme implementation for embedding an interpreter\n*  Clip - clipboard support\n*  Ctti - Compile time type information\n*  SDL2 - for windows/UI, as prebuilt package dependency\n*  Freetype - for better fonts, as a prebuilt package dependency\n*  httplib - a library for making http \u0026 https requests\n*  OpenSSL - for ssh support (so that httplib can make https calls), as a prebuilt dependency\n*  FileWatcher - utilities for watching for file changes \n*  GLM - a math library\n*  json - for reading and writing json files\n*  lexertk - a simple tokenizer/lexer\n*  magic_enum - the missing enum reflection api from c++\n*  pfd/tfd - file dialogs\n*  zip - creating and loading zip files\n*  toml11 \u0026 cpptoml - a useful/easy file format for storing configuration\n*  soundpipe, dr_libs, miniaudio, kiss_fft - useful libraries for sounds\n*  stb - single header utility libraries\n*  imgui - a GUI library, including OpenGL components\n*  tinydir - for parsing directories/searching for files\n*  fmt - a better string formatter\n*  tclap - for parsing commandline arguments\n*  threadpool - a simple C++ threadpool\n*  tracy - an awesome real time profiler\n*  mpc - a parser generator that's easy to use\n*  gsl-lit - a coding standards library\n\n## Utilties\n\nThese are useful snippets of code I've gathered over time.\n\n### Math functions\nFunctions for random numbers, aligning memory, handling rectangles, etc.\n\n### GL\nCompiling shaders, loading textures, creating geometry buffers and loading simple shapes\n\n### Animtation\nA simple clock/timer\n\n### Callback\nA scheduler that will call a function after a given time\n\n### String\nVarious utilities to split, tokenize and manipulate strings\n\n### Logger\nA really basic logger for outputting messages from an app\n\n### Thread\nUtilities for handling futures, and a threadpool for scheduling work\n\n### UI\nUseful functions for determining DPI and showing messages\nA simple wrapper for SDL/IMGUI to make it easy to build a 2D/3D app using a GUI and OpenGL\n\n### VM\nA VM which can take arbitrary variants as its core values.  Useful to execute previously compiled code\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frezonality%2Fmutils","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frezonality%2Fmutils","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frezonality%2Fmutils/lists"}