diff --git a/index.html b/index.html
index 420dce0..970ca25 100644
--- a/index.html
+++ b/index.html
@@ -970,7 +970,7 @@
CMake concepts: scope and usage requirements
CMake: further reading
-
+
- Variable scope and cache variables
(cmake.org/cmake/help/book/mastering-cmake/chapter/CMake
Cache.html)
@@ -1006,7 +1006,7 @@ Package management
Package management: where to get dependencies
-
+
- System package manager (APT, Homebrew, winget)
- Easy
@@ -1035,7 +1035,7 @@ Package management: where to get dependencies
- Similar drawbacks as above
- - C++ package manager (Vcpkg, Conan)
+
- C++ package manager (Vcpkg, Conan, Spack)
- Simple declaration of required dependencies, features and versions
- Good integration with CMake
@@ -1167,6 +1167,43 @@ Package management: Conan
Total Test time (real) = 0.00 sec
+
+
+ Package management: alternatives
+
+
+ - Conan (conan.io)
+
+ - Cross-platform C/C++ package manager
+ - Supports many different build systems (CMake, Meson, Visual Studio/MSBuild,
+ Autotools ...)
+ - Declarative
conanfile.txt
, flexible and extensible using Python
+ scripting in conanfile.py
+ - MIT license
+
+
+ - Vcpkg (vcpkg.io)
+
+ - Cross-platform C/C++ package manager
+ - Supports CMake and MSBuild
+ - Good integration with other Microsoft products like Visual Studio
+ - Declarative
vcpkg.json
manifest file, CMake scripting in
+ portfile.cmake
+
+ - MIT license, opt-out telemetry
+
+
+ - Spack (spack.io)
+
+ - Linux and macOS package manager (no Windows support yet)
+ - Aimed towards high-performance computing and supercomputing
+ - Targets specific microarchitectures for optimal performance, many supported
+ scientific languages, module support for managed HPC environments
+ - MIT or Apache-2.0 license
+
+
+
+
@@ -1394,10 +1431,10 @@ Catching bugs early: Undefined Behavior
Catching bugs early: Undefined Behavior
-
+
-
Undefined Behavior (UB) is a violation of language rules and compiler’s preconditions
-
+
- No guarantees about the output of the compiler!
- Runtime crash (e.g. segmentation fault) (best outcome)
@@ -1451,19 +1488,19 @@
Catching bugs early: preventing Undefined Behavior
- Address Sanitizer (
-fsanitize=address
)
-
+
- Checks for memory errors (use after free, array out of bounds,
dangling pointers)
- Undefined Behavior Sanitizer (
-fsanitize=undefined
)
-
+
- Checks for things like integer overflow, null pointer dereference, division by zero,
pointer misalignment, invalid vpointers
- Thread Sanitizer (
-fsanitize=thread
)
-
+
@@ -1727,7 +1764,7 @@ Best practices: formatting
Best practices: documentation
-
+
- Use a documentation generation tool
- Doxygen (www.doxygen.nl)
@@ -1762,7 +1799,7 @@ Best practices: documentation
Best practices: continuous integration
-
+
- Continuous integration: Run checks and tests every time you push code