Mercury provides a cross-platform base layer for configuring the system.
"Why Mercury?" I hear you say. Primarily because Mercury was the Roman god of boundaries, communication and travel which aligns with this project's main goals:
- Boundaries: Project Mercury will form the boundary between hardware and what a consumer wants to do, abstracting away platform-specifics.
- Communication: Project Mercury provides a translation abstraction layer between the consumers and the base hardware, regardless of what that may be.
- Travel: Project Mercury is designed to be cross-platform from the beginning, allowing the same apps to be delivered across multiple different platforms by providing the base abstraction upon which all functionality can be leveraged.
Additionally, Project Mercury was the first United States human spaceflight program and likewise this is our first foray into colonising other planets (well, hardware).
Finally, Mercury is an element known to send people mad when they inhale too much of the fumes: hopefully not a sign of things to come with this project.
The technologies which are used in this project are:
c++11
cmake
conan
cpplint
doxygen
googletest
lcov
make
qt
sphinx
pip3 install -r requirements-dev.txt
brew install cmake doxygen lcov qt
pip3 install -r requirements-dev.txt
apt-get install cmake doxygen lcov qt
make
CMake (3.10.0 minimum to allow us to use some of the newer goodies) is used to build both the project and the tests.
If your linux system is based on Debian Stretch, you can use the backports repositories to pull the latest CMake version. Alternatively, you can point your APT sources to Debian Buster.
make test
Tests are written with Google Test. Conan will handle installing all the dependencies here. Coverage reports are generated with lcov
and a report can be found in coverage/index.html
after running the tests.
make test-library will only cover the core library tests, explained above make test-python to run the Python3 tests only. Note that these tests can also run on the target installation system. You need to havemake
andpython-pytest
tools installed.
make lint
C++ linting is performed by the CppLint tool. The configuration is in the CPPLINT.cfg
file.
Automatic checking of the linting is performed by CodeFactor for your convenience.
make docs
The base documentation files can be found in the docs/source
directory.
C++ code is marked up with Doxygen which integrates with Sphinx using Breathe.