The goal of this project is to provide an open source library for building editors that can handle massive files, and multiple viewports.
User documentation is published to https://ctc-oss.github.io/omega-edit/.
- C/C++ compiler (such as clang, gcc, mingw, or MSVC)
- CMake (https://cmake.org/download/)
- conan C/C++ package manager (https://conan.io)
- git for version control (https://git-scm.com)
- make or ninja for running the build scripts (https://www.gnu.org/software/make/ or https://ninja-build.org)
- nvm or nodeenv for using specific versions of node.js
- doxygen to generate API documentation (https://www.doxygen.nl)
- graphviz to generate API documentation (https://graphviz.org)
- sphinx to generate user documentation (https://www.sphinx-doc.org)
- sphinx RTD theme (https://github.com/readthedocs/sphinx_rtd_theme)
- breathe ReStructuredText and Sphinx bridge to Doxygen (https://github.com/michaeljones/breathe)
- scala/sbt/java for building and running the gRPC server (https://www.scala-lang.org)
- yarn for building, testing, and packaging the node artifacts (https://yarnpkg.com)
The Ωedit™ project is built primarily using CLion, though Visual Studio Code also works well.
To use CMake presets in Visual Studio Code, install the CMake Tools extension and configure it to use presets:
- Open the Command Palette (
Ctrl+Shift+PorCmd+Shift+P) - Run "Preferences: Open Settings (JSON)"
- Add the following setting:
{ "cmake.useCMakePresets": "always" } - When you run "CMake: Configure", you'll be prompted to select a preset from the available options
❗ These commands should be executed at the root level of the repository ❗
Conan is the package manager used to install the C/C++ dependencies. It can be installed via pip.
pip install conanDepending on your linking needs, Ωedit™ can be built either as a static (e.g., libomega_edit.a) or shared
(e.g., libomega_edit.so) library. Release or Debug versions can be created. Example programs and documentation can
also be built if desired. The Scala server requires a shared library.
The project includes a CMakePresets.json file with predefined build configurations. To list available presets:
cmake --list-presetsTo configure and build using a preset:
cmake --preset ninja-debug-minimal
cmake --build --preset ninja-debug-minimalAvailable presets include combinations of:
- Generators:
ninja-*ormake-* - Build types:
*-debugor*-release - Options:
*-minimal(no docs/examples), default (all options), or*-static(static libraries) - CI presets:
ci(for automated builds) andci-docs(for documentation generation)
Here is how to build a debug version of a shared library, with no documentation or example programs.
cmake -S . -B _build -DCMAKE_BUILD_TYPE=Debug -DBUILD_DOCS=NO -DBUILD_EXAMPLES=NO -DBUILD_SHARED_LIBS=YESThis will build the core library, and any example programs or documentation if configured. Note that the config type
(Debug or Release) must match the config type (CMAKE_BUILD_TYPE) used when configuring the build.
cmake --build _build --config DebugThis will run the test suite for the core library. Note that the build config (Debug or Release) must match the
config type (CMAKE_BUILD_TYPE) used when configuring the build.
ctest --build-config Debug --test-dir _build/core --output-on-failureWe're installing in a directory named _install in the root of the repository. This is is where the Scala server will
look for the shared library by default or it can use the OE_LIB_DIR environment variable if different than the default
location. If you just want to use the library itself, you can install it anywhere you like (e.g., /usr/local).
cmake --install _build --config Debug --prefix _install❗ These commands should be executed at the root level of the repository after building/installing the core library ❗
Build, test, and package the server and client node packages. The server package will include the shared library built in the previous step and packages a gRPC server that runs in a Java Virtual Machine (JVM). The client package will include the node client.
yarn install
yarn workspace @omega-edit/server package
yarn workspace @omega-edit/client testNode packages will be in .tgz files located at:
/packages/server/omega-edit-node-server-${VERSION}.tgz
/packages/client/omega-edit-node-client-${VERSION}.tgz
More information about the node packages can be found in the packages folder.
Binary releases for macOS (Apple Silicon and x86), Windows (x86), and Linux (ARM, and x86; glibc 2.31 or greater required) are built and published via GitHub CI workflows.
Ωedit™ follows Semantic Versioning. Version information is managed through a single source of truth in the VERSION file at the repository root. See VERSION_MANAGEMENT.md for details on updating versions across all components.
- Apache Daffodil™ Extension for Visual Studio Code - The Data Editor component of this Visual Studio Code extension is powered by Ωedit™.