{"id":14982596,"url":"https://github.com/orestudio/orestudio","last_synced_at":"2026-04-18T02:01:32.677Z","repository":{"id":245572324,"uuid":"815674627","full_name":"OreStudio/OreStudio","owner":"OreStudio","description":"Graphical wrapper over Acadia's Open Source Risk Engine (ORE).","archived":false,"fork":false,"pushed_at":"2025-10-23T00:25:36.000Z","size":27669,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-23T02:22:36.306Z","etag":null,"topics":["cpp","cpp20","qt","qt6","qt6-gui","quantitative-finance","quantlib"],"latest_commit_sha":null,"homepage":"https://orestudio.github.io/OreStudio/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OreStudio.png","metadata":{"files":{"readme":"readme.org","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-06-15T19:50:37.000Z","updated_at":"2025-10-23T00:21:18.000Z","dependencies_parsed_at":"2024-06-29T00:33:01.007Z","dependency_job_id":"4c4d80d1-1d11-4c02-b24a-9a2b1d2533e3","html_url":"https://github.com/OreStudio/OreStudio","commit_stats":{"total_commits":308,"total_committers":3,"mean_commits":"102.66666666666667","dds":0.01948051948051943,"last_synced_commit":"ce97e28437f885f90297026642a9c062a080d6ba"},"previous_names":["orestudio/orestudio"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/OreStudio/OreStudio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OreStudio%2FOreStudio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OreStudio%2FOreStudio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OreStudio%2FOreStudio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OreStudio%2FOreStudio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OreStudio","download_url":"https://codeload.github.com/OreStudio/OreStudio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OreStudio%2FOreStudio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281654263,"owners_count":26538627,"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","status":"online","status_checked_at":"2025-10-29T02:00:06.901Z","response_time":59,"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":["cpp","cpp20","qt","qt6","qt6-gui","quantitative-finance","quantlib"],"created_at":"2024-09-24T14:05:42.783Z","updated_at":"2026-01-29T01:03:36.302Z","avatar_url":"https://github.com/OreStudio.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":":PROPERTIES:\n:ID: CB42DFE5-804B-E1C4-E1E3-0A6C4766609C\n:END:\n#+title: Ore Studio\n#+author: Marco Craveiro\n#+options: title:nil \u003c:nil c:nil todo:nil ^:nil d:nil date:nil author:nil toc:nil html-postamble:nil\n#+startup: inlineimages\n\n[[./assets/images/splash-screen.png]]\n\n#+HTML: \u003cdiv class=\"badge-wrapper\"\u003e\n#+html: \u003ca href=\"https://github.com/OreStudio/OreStudio/graphs/commit-activity\"\u003e\u003cimg alt=\"Maintenance\" src=\"https://img.shields.io/badge/Maintained%3F-yes-green.svg\"/\u003e\u003c/a\u003e\n#+html: \u003ca href=\"https://github.com/OreStudio/OreStudio/blob/main/LICENSE\"\u003e\u003cimg alt=\"Licence\" src=\"https://img.shields.io/badge/License-GPLv3-blue.svg\"/\u003e\u003c/a\u003e\n#+html: \u003ca href=\"https://en.wikipedia.org/wiki/C%2B%2B23\"\u003e\u003cimg alt=\"C++ Version\" src=\"https://img.shields.io/badge/std-C++23-blue.svg\"/\u003e\u003c/a\u003e\n#+html: \u003ca href=\"https://www.gnu.org/software/gcc/gcc-15\"\u003e\u003cimg alt=\"GCC Version\" src=\"https://img.shields.io/badge/GCC-15-blue.svg\"/\u003e\u003c/a\u003e\n#+html: \u003ca href=\"https://releases.llvm.org/19.1.0/tools/clang/docs/ReleaseNotes.html\"\u003e\u003cimg alt=\"Clang Version\" src=\"https://img.shields.io/badge/CLANG-19-blue.svg\"/\u003e\u003c/a\u003e\n#+html: \u003ca href=\"https://visualstudio.microsoft.com/vs/whatsnew/\"\u003e\u003cimg alt=\"MSVC Version\" src=\"https://img.shields.io/badge/MSVC-2022-blue.svg\"/\u003e\u003c/a\u003e\n#+html: \u003ca href=\"https://doc.qt.io/qt-6/\"\u003e\u003cimg alt=\"Qt6\" src=\"https://img.shields.io/badge/Qt-6-blue\"/\u003e\u003c/a\u003e\n#+html: \u003ca href=\"https://orestudio.github.io/OreStudio/doxygen/html/index.html\"\u003e\u003cimg alt=\"Doxygen\" src=\"https://raw.githubusercontent.com/OreStudio/OreStudio/main/assets/images/doxygen_badge.svg\"/\u003e\u003c/a\u003e\n#+html: \u003ca href=\"https://orestudio.github.io/OreStudio/doc/agile/v0/sprint_backlog_11.html\"\u003e\u003cimg alt=\"Agile Sprint\" src=\"https://img.shields.io/badge/Sprint-11-blue.svg\"/\u003e\u003c/a\u003e\n#+html: \u003ca href=\"https://www.gnu.org/software/emacs/\"\u003e\u003cimg alt=\"GNU Emacs\" src=\"https://img.shields.io/static/v1?logo=gnuemacs\u0026logoColor=fafafa\u0026label=Made%20with\u0026message=GNU%20Emacs\u0026color=7F5AB6\u0026style=flat\"/\u003e\u003c/a\u003e\n#+html: \u003ca href=\"https://discord.gg/gcrYsjW3pd\"\u003e\u003cimg alt=\"Discord\" src=\"https://img.shields.io/discord/1254062142626332732?color=5865F2\u0026amp;logo=discord\u0026amp;logoColor=white\"/\u003e\u003c/a\u003e\n#+html: \u003ca href=\"https://github.com/OreStudio/OreStudio/pulse\"\u003e\u003cimg alt=\"Commit Activity\" src=\"https://img.shields.io/github/commit-activity/m/OreStudio/OreStudio\"/\u003e\u003c/a\u003e\n#+html: \u003ca href=\"https://orestudio.github.io/OreStudio/\"\u003e\u003cimg alt=\"Website\" src=\"https://img.shields.io/badge/Website-orestudio.github.io-green.svg\"/\u003e\u003c/a\u003e\n#+html: \u003ca href=\"https://github.com/OreStudio/OreStudio/pulse/monthly\"\u003e\u003cimg alt=\"Status\" src=\"https://img.shields.io/badge/status-active-brightgreen.svg\"/\u003e\u003c/a\u003e\n#+html: \u003ca href=\"https://github.com/OreStudio/OreStudio/pulse\"\u003e\u003cimg alt=\"Last Commit\" src=\"https://img.shields.io/github/last-commit/OreStudio/OreStudio\"/\u003e\u003c/a\u003e\n#+html: \u003ca href=\"https://github.com/OreStudio/OreStudio/issues\"\u003e\u003cimg alt=\"Open Issues\" src=\"https://img.shields.io/github/issues/OreStudio/OreStudio\"/\u003e\u003c/a\u003e\n#+html: \u003ca href=\"https://github.com/OreStudio/OreStudio/issues?q=is%3Aissue+is%3Aclosed\"\u003e\u003cimg alt=\"Closed Issues\" src=\"https://img.shields.io/github/issues-closed/OreStudio/OreStudio\"/\u003e\u003c/a\u003e\n#+html: \u003ca href=\"https://github.com/OreStudio/OreStudio/pulls\"\u003e\u003cimg alt=\"Open PRs\" src=\"https://img.shields.io/github/issues-pr/OreStudio/OreStudio\"/\u003e\u003c/a\u003e\n#+html: \u003ca href=\"https://github.com/OreStudio/OreStudio/pulls?q=is%3Apr+is%3Aclosed\"\u003e\u003cimg alt=\"Closed PRs\" src=\"https://img.shields.io/github/issues-pr-closed/OreStudio/OreStudio\"/\u003e\u003c/a\u003e\n#+html: \u003ca href=\"https://github.com/OreStudio/OreStudio/graphs/contributors\"\u003e\u003cimg alt=\"Contributors\" src=\"https://img.shields.io/github/contributors/OreStudio/OreStudio.svg\"/\u003e\u003c/a\u003e\n#+html: \u003ca href=\"https://github.com/OreStudio/OreStudio/blob/main/CONTRIBUTING.md\"\u003e\u003cimg alt=\"Contributing\" src=\"https://img.shields.io/badge/PRs%20-welcome-brightgreen.svg\"/\u003e\u003c/a\u003e\n#+html: \u003ca href=\"https://my.cdash.org/index.php?project=OreStudio\"\u003e\u003cimg alt=\"CDash Dashboard\" src=\"https://img.shields.io/badge/cdash-dashboard-00cc00.svg\"/\u003e\u003c/a\u003e\n#+html: \u003ca href=\"https://github.com/OreStudio/OreStudio/actions/workflows/continuous-linux.yml\"\u003e\u003cimg alt=\"Continuous Linux\" src=\"https://github.com/OreStudio/OreStudio/actions/workflows/continuous-linux.yml/badge.svg\"/\u003e\u003c/a\u003e\n#+html: \u003ca href=\"https://github.com/OreStudio/OreStudio/actions/workflows/continuous-windows.yml\"\u003e\u003cimg alt=\"Continuous Windows\" src=\"https://github.com/OreStudio/OreStudio/actions/workflows/continuous-windows.yml/badge.svg\"/\u003e\u003c/a\u003e\n#+html: \u003ca href=\"https://github.com/OreStudio/OreStudio/actions/workflows/continuous-macos.yml\"\u003e\u003cimg alt=\"Continuous MacOS.yml\" src=\"https://github.com/OreStudio/OreStudio/actions/workflows/continuous-macos.yml/badge.svg\"/\u003e\u003c/a\u003e\n#+html: \u003ca href=\"https://github.com/OreStudio/OreStudio/actions/workflows/nightly-linux.yml\"\u003e\u003cimg alt=\"Nightly Linux\" src=\"https://github.com/OreStudio/OreStudio/actions/workflows/nightly-linux.yml/badge.svg\"/\u003e\u003c/a\u003e\n#+html: \u003ca href=\"https://github.com/OreStudio/OreStudio/commits/main\"\u003e\u003cimg alt=\"Commits\" src= \"https://img.shields.io/github/commits-since/OreStudio/OreStudio/v0.0.10.svg\"/\u003e\u003c/a\u003e\n#+html: \u003ca href=\"https://github.com/OreStudio/OreStudio/releases\"\u003e\u003cimg alt=\"Downloads\" src=\"https://img.shields.io/github/downloads/OreStudio/OreStudio/total.svg\"/\u003e\u003c/a\u003e\n#+html: \u003ca href=\"https://github.com/OreStudio/OreStudio/releases\"\u003e\u003cimg alt=\"Releases\" src=\"https://img.shields.io/github/release/OreStudio/OreStudio.svg\"/\u003e\u003c/a\u003e\n#+HTML: \u003c/div\u003e\n\n* In a nutshell\n\nORE Studio is a graphical wrapper around [[https://www.opensourcerisk.org/][Acadia's]] [[https://github.com/OpenSourceRisk/Engine][Open Source Risk Engine (ORE)]],\nwhich itself builds atop of [[https://github.com/lballabio/QuantLib][QuantLib]]. Please note that this open source project\nhas *no affiliation whatsoever* with ORE or QuantLib, but you cannot understand\nORE Studio without at least a basic understanding of both of these projects.\n\nQuantLib is defined as follows:\n\n#+begin_quote\nThe QuantLib project (https://www.quantlib.org) is aimed at providing a\ncomprehensive software framework for quantitative finance. QuantLib is a\nfree/open-source library for modeling, trading, and risk management in\nreal-life.\n#+end_quote\n\nORE tells us that\n\n#+begin_quote\nThe [[https://www.opensourcerisk.org/][Open Source Risk]] project aims at establishing a transparent peer-reviewed\nframework for pricing and risk analysis that can serve as\n\n- a benchmarking, validation, training, teaching reference\n- an extensible foundation for tailored risk solutions\n\nOpen Source Risk Engine (ORE) provides\n\n- contemporary risk analytics and value adjustments (XVAs)\n- interfaces for trade/market data and system configuration (API and XML)\n- simple application launchers in Excel, LibreOffice, Python, Jupyter\n- various examples that demonstrate typical use cases\n- comprehensive test suites\n\nORE is based on [[https://www.quantlib.org/][QuantLib]], the open source library for quantitative finance, and\nit extends QuantLib in terms of simulation models, financial instruments and\npricing engines.\n#+end_quote\n\n/ORE Studio/ builds on top of ORE with the eventual aim of providing:\n\n- persistent database storage for all of its inputs and outputs, with basic [[https://en.wikipedia.org/wiki/Create,_read,_update_and_delete][CRUD]]\n  support;\n- graphical user interface both for data generation as well as data exploration;\n- ability to configure and orchestrate ORE execution.\n\n[[./assets/images/ore_studio_stack.png]]\n\nThe remainder of this document describes our approach in greater detail.\n\n* Links\n\n- [[https://github.com/OreStudio/OreStudio][GitHub]]: Most project interaction for developers occurs via GitHub.\n- [[https://orestudio.github.io/OreStudio/][Website]]: Statically generated website with project documentation.\n\n* Project Overview\n\nThe objective of this project is to create a simple User Interface for ORE, /for\ndidactic purposes/. Significantly, our intent is *not* to create a professional\ntool for enterprise-grade use. We instead follow on the footsteps of those like\n[[https://x.com/karpathy/status/1756380066580455557?lang=en][Karpathy]], who view learning as deeply enmeshed with the act of building.\n\nWith this in mind, our strategy is two-fold:\n\n- to learn by /creating the tool itself/; and\n- to create a tool specifically designed for others to learn, explore and\n  experiment within the domain of [[https://en.wikipedia.org/wiki/Quantitative_analysis_(finance)][quantitative finance]], both by using the tool\n  as well as by extending it for their own purposes.\n\nThe next section explains how we intend to go on about it.\n\n** Approach\n\nTo attain our goals we have decided to remove as many infrastructural moving\nparts as possible from the engineering stack. Most financial systems involve a\nmyriad of micro-services, a veritable zoo of storage technologies, assorted\nmessaging queues, orchestration engines and much, much more. Whilst these may be\ndeemed necessary for enterprise systems, we find them counterproductive from a\nteaching perspective as they obscure considerably the underlying domain concepts\nthey purport to implement.\n\nIn stark contrast, ORE Studio will only ever have three layers: the /client/,\nthe /server/ and the [[https://www.postgresql.org/][Postgres]] relational database. This simple architecture has\nseveral implications:\n\n- [[https://en.wikipedia.org/wiki/Business_logic][business logic]] will be divided between the server and database layers, as\n  required; it is to be located wherever the implementation can be done with the\n  least amount of complexity and the highest amount of clarity.\n- unlike with enterprise-grade software, performance and scalability come\n  /after/ clarity. That is to say that we shall try our best to make things fast\n  /within/ the stated constraints. The one exception is the interactive\n  experience, which is to be prioritised.\n- we shall focus /exclusively/ on the latest versions of [[https://github.com/OpenSourceRisk/Engine][ORE]] and [[https://github.com/lballabio/QuantLib][QuantLib]], and\n  will not support any other Quant libraries or engines. ORE Studio is designed\n  to be fused with these two technologies.\n- finally, all of the heavy quantitative / mathematical lifting will reside\n  exclusively within ORE and QuantLib; ORE Studio itself will contain as little\n  quant logic as possible, making it more accessible to regular developers. Our\n  focus is on [[https://en.wikipedia.org/wiki/Create,_read,_update_and_delete][CRUD]] infrastructure and graphical presentation.\n\nYou may think this architecture is far too simple, and you are probably right.\nWe prefer to align ourselves with others such as Schmidt, and heed his call for\n[[https://www.radicalsimpli.city/][\"Radical Simplicity in Technology\"]]:\n\n#+begin_quote\nAs developers we love complexity. We create complexity with SPAs, Vue/React,\nTranspiling, Typescript, Babel, Webpack, PureCSS, GraphQL, JSON, and on the\nbackend with microservices, protobuf, Kafka, InfluxDB, or NoSQL databases. This\ncomplexity is accidental and not in the problem domain. This complexity slows us\ndown and makes development tiresome. This complexity leads to shallow domains.\nRadical Simplicity makes development fast and joyful again.\n#+end_quote\n\n*** Technology\n\nThe implementation language of choice is [[https://isocpp.org/][C++]], for somewhat arbitrary reasons.\nAfter many years of software engineering with it --- both [[https://github.com/MASD-Project/dogen][academically]] as well\nas professionally --- I have now found myself estranged from the language for\nthe last few years. This project is thus an opportunity for me to catch up with\nthe latest and greatest developments in the C++ ecosystem. Python would have\nbeen a suitable alternative, particularly given its popularity with [[https://en.wikipedia.org/wiki/Quantitative_analysis_(finance)][Quants]] and\nQuant Devs. However, in the interest of simplicity, we'll stick to just the\n/one/ language (other than [[https://en.wikipedia.org/wiki/SQL][SQL]] for the database, or course).\n\n*** About the Author\n\nI am the single maintainer of ORE Studio and thus its [[https://en.wikipedia.org/wiki/Benevolent_dictator_for_life][BFDL]]. If you want to know\nmore about me, do have a peek at [[https://mcraveiro.github.io/][my personal website]] --- the [[https://mcraveiro.github.io/about.html][about section]] in\nparticular. As with most open source projects, [[https://github.com/OreStudio/OreStudio/blob/main/CONTRIBUTING.md][PRs are welcome]] but they must be\nin the spirit of what has been described thus far. And you can always reach out\nto our [[https://discord.gg/gcrYsjW3pd][discord channel]] for a chat.\n\n* Project Documentation\n\nAll documentation for this project is kept within [[https://git-scm.com/][git]], right next to its source\ncode. It uses [[https://www.gnu.org/software/emacs/][Emacs]] and [[https://orgmode.org/][org-mode]] to [[https://github.com/OreStudio/OreStudio/actions/workflows/build-site.yml][automatically generate]] its [[https://orestudio.github.io/OreStudio/][website]], in a\nvariation of [[https://en.wikipedia.org/wiki/Literate_programming][literate programming]]. We also use [[https://www.orgroam.com/][org-roam]] internally to organise\nour notes and [[https://orgmode.org/worg/org-contrib/babel/][org-babel]] to make code blocks executable where possible. Org-roam\nis an implementation of the [[https://en.wikipedia.org/wiki/Zettelkasten][Zettelkasten method]], though you need not care too\nmuch about it if you do not use Emacs; just browse through the content via [[https://orestudio.github.io/OreStudio/][the\nwebsite]] and start with \"[[id:C0CF98E8-082F-2F04-2533-94B2DA9BE3D2][Documentation]]\" as the entry point. Unfortunately this\nonly works via the website, so you will not see some of the links within\nGitHub's rendering of the org-mode files.\n\nIf you do use Emacs, you can make use of a much richer roam experience. The file\n[[https://github.com/OreStudio/OreStudio/blob/main/.dir-locals.el][.dir-locals.el]] is configured to generate a local roam database when you run:\n\n#+begin_src emacs-lisp\n(org-roam-db-sync)\n#+end_src\n\nThis snippet, as well as many like it, is an executable snippet via org-babel.\nOnce you run it, you can then jump through all the pages using the normal\norg-roam facilities.\n\nLastly, you may notice that this content is somewhat academic in tone. Though we\nare not affiliated with any academic effort, I have kept a lot of bad habits\nfrom my [[https://masd-project.github.io/progen/docs/masd_academic_papers.html#ID-5FA85AF3-E55C-B174-D943-1E2246CAEB14][days at university]] and these inform the approach --- for example how we\nresearch prior art, organise the documentation, the use of [[https://github.com/OreStudio/OreStudio/blob/464525bd80e8cb5d69550bbcf06ed3da4e702966/doc/bibliography.bib][references]] and so on.\nNonetheless, rather than a research model, the project intends to be useful to\nacademics and practitioners alike, within its stated constraints. If you do want\nto use the project for research, a [[https://www.earthdata.nasa.gov/engage/doi-process][DOI]] will be made available in [[https://zenodo.org/][Zenodo]] when we\ndo our first release. Once sufficient functionality has been implemented to\njustify the effort, we'll write a Technical Report describing the tool.\n\n* Binary Packages\n\nBinary packages are available for each release in [[https://github.com/OreStudio/OreStudio/releases][GitHub]], with the links shown\nat the end of each release note. The binaries cover [[https://www.debian.org/][Debian Linux]] (though they\nprobably also work for [[https://ubuntu.com/][Ubuntu]] and other flavours), [[https://en.wikipedia.org/wiki/MacOS][MacOS]] and [[https://en.wikipedia.org/wiki/Microsoft_Windows][Windows]] --- all\n64-bit only. Packages are also generated per commit for each Operative System\nand stored with the corresponding [[https://github.com/OreStudio/OreStudio/actions][GitHub Workflow]]. Development is done from the\n[[https://github.com/OreStudio/OreStudio][main branch in git]], so latest should always be greatest; but you may want to use\npackages from the [[https://orestudio.github.io/OreStudio/doc/agile/agile.html][previous sprint]] rather than what is currently under\ndevelopment (see badges above).\n\nNotes:\n\n- Other than Linux, we do not test the packages frequently. If you find any\n  issues with a binary package, please [[https://github.com/OreStudio/OreStudio/issues][raise an issue]].\n- The OSX installer provides you with a DMG. Once you open it in Finder, it\n  mounts under =/Volumes/=, /e.g/.:\n\n#+begin_src sh\n/Volumes/OreStudio-${VERSION}-Darwin/orestudio.app/Contents/Resources/bin\n#+end_src\n\nWhere =${VERSION}= is your ORE Studio version, such as =0.0.11=.\n\n* Building From Source\n\nIn order to build ORE Studio you will need a modern [[https://en.wikipedia.org/wiki/C%2B%2B][C++]] [[https://en.wikipedia.org/wiki/Toolchain][toolchain]]. On Linux and\nOSX, you'll need a recent compiler with [[https://en.wikipedia.org/wiki/C%2B%2B20][C++ 20]] support, such as [[https://www.gnu.org/software/gcc/gcc-13][GCC 13]] or [[https://releases.llvm.org/16.0.0/tools/clang/docs/ReleaseNotes.html][Clang\n14]], and [[https://ninja-build.org/manual.html][Ninja]] or [[https://www.gnu.org/software/make/][GNU Make]]. On Windows you'll need [[https://visualstudio.microsoft.com/vs/whatsnew/][Visual Studio 2022]]. On all\nplatforms, we make extensive use of [[https://cmake.org/][CMake]]. Older compilers may work, but we try\nto always use the most recent releases. So, if you can, please try using to\nthose.\n\nIn terms of dependencies, though ORE Studio should build fine with\npackage-manager supplied libraries or even with hand-built dependencies, the\nrecommended way to setup a development environment on all supported platforms is\nby using [[https://github.com/Microsoft/vcpkg][vcpkg]], which is what this document describes. ORE Studio uses the\n\"[[https://stackoverflow.com/questions/73967245/why-is-vcpkg-recommended-as-a-git-submodule][sub-module setup]]\", whereby vcpkg is a git submodule of ORE Studio. All of the\ndependencies are declared in the [[https://github.com/OreStudio/OreStudio/blob/main/vcpkg.json][vcpkg.json]] file. Unfortunately, some of these\npackages also have dependencies --- particularly on Linux. If you are on Debian\nor Ubuntu, please run the script [[https://github.com/OreStudio/OreStudio/blob/main/build/scripts/install_debian_packages.sh][=build\\scripts\\install_debian_packages.sh=]]\nprior to building.\n\nOur build makes use of [[https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html][CMake Presets]]. To know what these are you can either have\na look at the presets file [[https://github.com/OreStudio/OreStudio/blob/main/CMakePresets.json][CMakePresets.json]] or, better still, ask CMake:\n\n#+begin_src sh :results verbatim html\ncmake --list-presets\n#+end_src\n\n#+RESULTS:\n#+begin_export html\nAvailable configure presets:\n\n  \"linux-clang-debug\"             - Linux Clang Debug\n  \"linux-clang-release\"           - Linux Clang Release\n  \"linux-gcc-debug\"               - Linux GCC debug\n  \"linux-gcc-release\"             - Linux GCC Release\n  \"windows-msvc-debug\"            - Windows x64 Debug\n  \"windows-msvc-release\"          - Windows x64 Release\n  \"windows-msvc-clang-cl-debug\"   - Windows x64 Debug\n  \"windows-msvc-clang-cl-release\" - Windows x64 Release\n  \"macos-clang-debug\"             - Mac OSX Debug\n  \"macos-clang-release\"           - Mac OSX Release\n#+end_export\n\nFor the remainder of this document we shall assume =linux-clang-release=, which\nis our preferred preset. If it isn't yours, remember to update the preset name\nto match your desired build.\n\nTo checkout ORE Studio, clone as follows:\n\n#+begin_src sh :results verbatim html\ngit clone https://github.com/OreStudio/OreStudio.git --recurse-submodules\n#+end_src\n\nThe =--recurse-submodules= is needed for the vcpkg submodule setup. As for the\nconfigure step:\n\n#+begin_src sh :results verbatim html\ncd OreStudio\ncmake --preset linux-clang-release\n#+end_src\n\nYou can then build ORE Studio on all platforms as follows:\n\n#+begin_src sh :results verbatim html\ncmake --build --preset linux-clang-release\n#+end_src\n\nIf you'd like to run the project tests, execute the target =run_all_tests= or\nits abbreviation =rat=.\n\n#+begin_src sh :results verbatim html\ncmake --build --preset linux-clang-release --target rat\n#+end_src\n\nA quicker way to do all of these steps in one go is to use the [[https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html#workflow-preset][workflow preset]]:\n\n#+begin_src sh\ncmake --workflow --preset linux-clang-release\n#+end_src\n\nLast but not least, you can start the GUI via the target =run_ores_qt=:\n\n#+begin_src sh\ncmake --build --preset linux-clang-release --target run_ores_qt\n#+end_src\n\nNote: if you bump into posgres errors, do:\n\n#+begin_src sh\nZIC=zic cmake --preset linux-clang-debug\n#+end_src\n\n* Updating vcpkg\n\nOccasionally we need to pull latest vcpkg from the remote. To do so:\n\n#+begin_src sh\ncd vcpkg\ngit checkout master\ngit pull origin master\ncd ..\ngit add vcpkg\n#+end_src\n\nCheck the branch and then commit the update:\n\n#+begin_src sh\ngit commit -m \"[vcpkg] Update to 2025.07.25-765-g7220a4eebf\"\n#+end_src\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forestudio%2Forestudio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Forestudio%2Forestudio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forestudio%2Forestudio/lists"}