Either download a .tar.gz/.zip from the green download button above, or clone via git:
git clone https://github.com/ZincSoft/CATNET.git
CATnet uses the Meson build system, because quite simply, it is one of the best build systems for C++. But you're not here to find out why Meson is so awesome, you just want to build CATnet. To build CATnet, you must have Meson and Ninja installed on your system.
If on Linux, just install your distros meson package, and ninja will be installed along side it. Same on Mac OS. On Windows, winget doesn't have a package for it. Please look up installation directions for Meson and Ninja on Windows. Or throw your Windows cursed hard drive in a bin. Either works.
As of now, you need to libraries installed: LibSodium and Google Protobuf. In the future, we hope to include these in the project so you won't have to download and install them seperate. Your package manager should have packages for them. The following is how to build CATnet.
Also, you need a swift compiler. This is not techinically needed on Linux, but due to limitations of Meson, you we have to require the same compilers on all platforms.
meson build --buildtype=release
cd build
ninja
Look at the help menu, then run with the flags/arguments you want!
catnetd participant --help
Look at the help menu, then run with the flags/arguments you want!
catnet registrar --help
During development of CATnet, you may wish these flags:
-l0
, enables all levels of logging. Please note that trace and info logging are disabled in release builds.-Denable-docs
, pass this to meson while configuring to also generate docs insidebuild/src/docs/html
The way to build CATnet is basically the same as how a regular user would, but instead of running meson build
you run meson build --buildtype=debug
Please see src/logging/include/log.hpp
to see the macros availble. Please choose the right one.
In order to make CATnet easier to maintain and understand, we follow the CppCoreGuidelines. If you need to find out how to style a specific C++ feature, please use your browsers built in search function, or clone it onto your system and find . | grep x
.
The first time you use a feature (even if it is trivial, such as function declaration), please look up the prefered way to use it in the guidelines.
Pretend the other people working on this code base are insane, have a shotgun, and know where you live. As such, please follow WORKFLOW.MD
.
Here is a link to our specifications document.
Thank you for even considering contributing to this project. At this time, we will NOT be merging pull requests that are linked to issues that themselves are linked to a certain project. We are, however, eternally greatfull for bug fixes.