Skip to content

Commit aa2f8ce

Browse files
authored
Addition of package management section
1 parent c4fb1cf commit aa2f8ce

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

02-Use_the_Tools_Available.md

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,7 @@ Use an industry standard widely accepted build tool. This prevents you from rein
2121
* Consider: https://github.com/toeb/cmakepp for enhanced usability
2222
* Utilize: https://cmake.org/cmake/help/v3.6/command/target_compile_features.html for C++ standard flags
2323
* Consider: https://github.com/cheshirekow/cmake_format for automatic formatting of your CMakeLists.txt
24-
* [Conan](https://www.conan.io/) - a crossplatform dependency manager for C++
25-
* [C++ Archive Network (CPPAN)](https://cppan.org/) - a crossplatform dependency manager for C++
24+
* See the [Further Reading](10-Further_Reading.md) section for CMake specific best practices
2625
* [Waf](https://waf.io/)
2726
* [FASTBuild](http://www.fastbuild.org/)
2827
* [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
3231
* [Qt Build Suite](http://doc.qt.io/qbs/) - Crossplatform build tool From Qt.
3332
* [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.
3433
* [premake](https://premake.github.io/)
35-
* [hunter](https://github.com/ruslo/hunter) - CMake driven cross-platform package manager for C/C++
34+
3635

3736
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.
3837

38+
## Package Manager
39+
40+
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.
41+
42+
* [Conan](https://www.conan.io/) - a crossplatform dependency manager for C++
43+
* [hunter](https://github.com/ruslo/hunter) - CMake driven cross-platform package manager for C/C++
44+
* [C++ Archive Network (CPPAN)](https://cppan.org/) - a crossplatform dependency manager for C++
45+
* [qpm](https://www.qpm.io/) - Package manager for Qt
46+
47+
3948
## Continuous Integration
4049

4150
Once you have picked your build tool, set up a continuous integration environment.
@@ -190,7 +199,7 @@ Notes:
190199
* Finding unused headers does not work with `-j` more than 1.
191200
* Remember to add `--force` for code with a lot number of `#ifdef` if you need check all of them.
192201

193-
### CppDepend
202+
### CppDepend
194203

195204
[CppDepend](https://www.cppdepend.com/) Simplifies managing a complex C/C++ code base by analyzing and visualizing code dependencies, by defining design rules, by doing impact analysis, and comparing different versions of the code. It's free for OSS contributors.
196205

@@ -248,6 +257,7 @@ A coverage analysis tool shall be run when tests are executed to make sure the e
248257
* [kcov](http://simonkagstrom.github.io/kcov/index.html)
249258
* integrates with codecov and coveralls
250259
* performs code coverage reporting without needing special compiler flags, just by instrumenting debug symbols.
260+
* [OpenCppCoverage](https://github.com/OpenCppCoverage/OpenCppCoverage) - open source coverage reporting tool for Windows.
251261

252262

253263
### Valgrind
@@ -267,6 +277,8 @@ These tools provide many of the same features as Valgrind, but built into the co
267277
* ThreadSanitizer
268278
* UndefinedBehaviorSanitizer
269279

280+
Be aware of the sanitizer options available, including runtime options. https://kristerw.blogspot.com/2018/06/useful-gcc-address-sanitizer-checks-not.html
281+
270282
### Fuzzy Analyzers
271283

272284
If your project accepts user defined input, considering running a fuzzy input tester.

0 commit comments

Comments
 (0)