Contributing
Guidelines 📐
- Discussions: Discussions are concentrated on our GitHub discussions page. Don't refrain from asking questions and proposing ideas. If this library helps you create something interesting, please divulge it with the community.
- Sharing Ideas: If you are a programmer with good ideas, please share these ideas with us.
- Academic collaboration is more than welcome. It'd be great to see this library help people write papers.
Developer mode 👨💻
Build system targets that are only useful for developers of this project are
hidden if the DOXYBOOK_DEVELOPER_MODE
CMake option is disabled. Enabling this
option makes tests and other developer targets and options available.
Not enabling this option means that you are a consumer of this project, and thus you have no need for these targets and options.
CMake Developer Options
The following options are available only when building the library in developer mode:
Option | Description | Default |
---|---|---|
DOXYBOOK_DEVELOPER_MODE |
Enable developer mode | OFF |
BUILD_SHARED_LIBS |
Build shared libs. | OFF |
DOXYBOOK_BUILD_TESTS |
Build tests | ON |
DOXYBOOK_BUILD_SINGLE_TARGET_TESTS |
Build tests | OFF |
DOXYBOOK_BUILD_EXAMPLES |
Build examples | ON |
DOXYBOOK_BUILD_DOCS |
Build documentation | ON |
DOXYBOOK_BUILD_COVERAGE_REPORT |
Enable coverage support | OFF |
DOXYBOOK_BUILD_LINT |
Enable linting | OFF |
DOXYBOOK_PEDANTIC_WARNINGS |
Use pedantic warnings. | ON |
DOXYBOOK_WARNINGS_AS_ERRORS |
Treat warnings as errors. | ON |
DOXYBOOK_SANITIZERS |
Build with sanitizers. | ON if compiling in Debug mode |
DOXYBOOK_CATCH2_REPORTER |
Reporter Catch2 should use when invoked from ctest. | console |
DOXYBOOK_TIME_TRACE |
Enable clang time-trace. | ON |
DOXYBOOK_BUILD_WITH_UTF8 |
Accept utf-8 in MSVC by default. | ON |
PRs 💡
Feel free to contribute new features to this library. For complex features and changes, consider getting feedback from the community first. Contributing to an existing code base with its conventions might seem obscure at first but please don't let that discourage you from sharing your ideas.
There are many ways in which you can contribute to this library:
- Testing the library in new environments see 1 , 2 , 3
- Contributing with interesting examples see 1
- Finding problems in this documentation see 1
- Finding bugs in general see 1 , 2 , 3 , 4
- Whatever idea seems interesting to you
Constructive contributions
The only thing we ask you is to make sure your contribution is not destructive. Some contributions in which we are not interested are:
- "I don't like this optional feature, so I removed/deprecated it"
- "I removed this feature to support older versions of C++" but have not provided an equivalent alternative
- "I removed this feature, so I don't have to install/update ______" but have not provided an equivalent alternative
- "I'm creating this high-cost promise that we'll support __ forever" but I'm not sticking around to keep that promise
In doubt, please open a discussion first