You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 02-Use_the_Tools_Available.md
+16-4Lines changed: 16 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -21,8 +21,7 @@ Use an industry standard widely accepted build tool. This prevents you from rein
21
21
* Consider: https://github.com/toeb/cmakepp for enhanced usability
22
22
* Utilize: https://cmake.org/cmake/help/v3.6/command/target_compile_features.html for C++ standard flags
23
23
* 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
26
25
*[Waf](https://waf.io/)
27
26
*[FASTBuild](http://www.fastbuild.org/)
28
27
*[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
32
31
*[Qt Build Suite](http://doc.qt.io/qbs/) - Crossplatform build tool From Qt.
33
32
*[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.
34
33
*[premake](https://premake.github.io/)
35
-
*[hunter](https://github.com/ruslo/hunter) - CMake driven cross-platform package manager for C/C++
34
+
36
35
37
36
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.
38
37
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
+
39
48
## Continuous Integration
40
49
41
50
Once you have picked your build tool, set up a continuous integration environment.
@@ -190,7 +199,7 @@ Notes:
190
199
* Finding unused headers does not work with `-j` more than 1.
191
200
* Remember to add `--force` for code with a lot number of `#ifdef` if you need check all of them.
192
201
193
-
### CppDepend
202
+
### CppDepend
194
203
195
204
[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.
196
205
@@ -248,6 +257,7 @@ A coverage analysis tool shall be run when tests are executed to make sure the e
* 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.
251
261
252
262
253
263
### Valgrind
@@ -267,6 +277,8 @@ These tools provide many of the same features as Valgrind, but built into the co
267
277
* ThreadSanitizer
268
278
* UndefinedBehaviorSanitizer
269
279
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
+
270
282
### Fuzzy Analyzers
271
283
272
284
If your project accepts user defined input, considering running a fuzzy input tester.
0 commit comments