mirror of
https://github.com/cpp-best-practices/cppbestpractices.git
synced 2025-12-17 03:04:36 +03:00
Addition of package management section
This commit is contained in:
@@ -21,8 +21,7 @@ Use an industry standard widely accepted build tool. This prevents you from rein
|
||||
* Consider: https://github.com/toeb/cmakepp for enhanced usability
|
||||
* Utilize: https://cmake.org/cmake/help/v3.6/command/target_compile_features.html for C++ standard flags
|
||||
* Consider: https://github.com/cheshirekow/cmake_format for automatic formatting of your CMakeLists.txt
|
||||
* [Conan](https://www.conan.io/) - a crossplatform dependency manager for C++
|
||||
* [C++ Archive Network (CPPAN)](https://cppan.org/) - a crossplatform dependency manager for C++
|
||||
* See the [Further Reading](10-Further_Reading.md) section for CMake specific best practices
|
||||
* [Waf](https://waf.io/)
|
||||
* [FASTBuild](http://www.fastbuild.org/)
|
||||
* [Ninja](https://ninja-build.org/) - can greatly improve the incremental build time of your larger projects. Can be used as a target for CMake.
|
||||
@@ -32,10 +31,20 @@ Use an industry standard widely accepted build tool. This prevents you from rein
|
||||
* [Qt Build Suite](http://doc.qt.io/qbs/) - Crossplatform build tool From Qt.
|
||||
* [meson](http://mesonbuild.com/index.html) - Open source build system meant to be both extremely fast, and, even more importantly, as user friendly as possible.
|
||||
* [premake](https://premake.github.io/)
|
||||
* [hunter](https://github.com/ruslo/hunter) - CMake driven cross-platform package manager for C/C++
|
||||
|
||||
|
||||
Remember, it's not just a build tool, it's also a programming language. Try to maintain good clean build scripts and follow the recommended practices for the tool you are using.
|
||||
|
||||
## Package Manager
|
||||
|
||||
Package management is an important topic in C++, with currently no clear winner. Consider using a package manager to help you keep track of the dependencies for your project and make it easier for new people to get started with the project.
|
||||
|
||||
* [Conan](https://www.conan.io/) - a crossplatform dependency manager for C++
|
||||
* [hunter](https://github.com/ruslo/hunter) - CMake driven cross-platform package manager for C/C++
|
||||
* [C++ Archive Network (CPPAN)](https://cppan.org/) - a crossplatform dependency manager for C++
|
||||
* [qpm](https://www.qpm.io/) - Package manager for Qt
|
||||
|
||||
|
||||
## Continuous Integration
|
||||
|
||||
Once you have picked your build tool, set up a continuous integration environment.
|
||||
@@ -248,6 +257,7 @@ A coverage analysis tool shall be run when tests are executed to make sure the e
|
||||
* [kcov](http://simonkagstrom.github.io/kcov/index.html)
|
||||
* integrates with codecov and coveralls
|
||||
* performs code coverage reporting without needing special compiler flags, just by instrumenting debug symbols.
|
||||
* [OpenCppCoverage](https://github.com/OpenCppCoverage/OpenCppCoverage) - open source coverage reporting tool for Windows.
|
||||
|
||||
|
||||
### Valgrind
|
||||
@@ -267,6 +277,8 @@ These tools provide many of the same features as Valgrind, but built into the co
|
||||
* ThreadSanitizer
|
||||
* UndefinedBehaviorSanitizer
|
||||
|
||||
Be aware of the sanitizer options available, including runtime options. https://kristerw.blogspot.com/2018/06/useful-gcc-address-sanitizer-checks-not.html
|
||||
|
||||
### Fuzzy Analyzers
|
||||
|
||||
If your project accepts user defined input, considering running a fuzzy input tester.
|
||||
|
||||
Reference in New Issue
Block a user