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.
❗ 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 conan
Depending 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.
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=YES
This 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 Debug
This 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-failure
We'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 test
Node 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.
- Apache Daffodil™ Extension for Visual Studio Code - The Data Editor component of this Visual Studio Code extension is powered by Ωedit™.