Comment

Comment by williamvds

This is a good idea. Most modern languages have their own build tool which handle most of these things, so this requires some separate learning with C++.

Some ideas for a curriculum:

Context

- C++ as a standard, compilers as implementations

- a build tool's role in handling compilation and linking

- compilers having limited abilities, having limited warnings and analysis by default

Build tools

- evolution: e.g. make -> autotools, cmake, meson

- focus on meson as the build tool of choice (personally I'd avoid CMake since it has a lot of legacy baggage)

Testing

- gtest/gmock

- catch

- designing for testing

Analysis tools

- why you should care: security, catching bugs

- cranking up built-in compiler warnings to reasonable standards

- external tools like clang-tidy, cppcheck

- sanitizers: address sanitizer, leak, thread, etc.

- fuzzing

Dependency management (probably the toughest, since it's still a mess)

- history: usually just relying on system packages, or installing libraries globally from source

- Conan (probably the best option for simple dependencies that's actually catching on)

- CMake external projects, Git submodules

- Docker

- Nix (if you're feeling adventurous)

parent williamvds 3 years ago

Discussion

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton