Stop learning C++ the wrong way. Master it like professionals do - with real projects, modern tools, and industry practices.
This repository contains the complete source code and projects for the comprehensive C++23 Fundamentals course available on Udemy.
Don't waste time with outdated tutorials and toy examples. This course teaches C++ the way it's actually used in industry:
- Real-World Projects, Not Toy Examples
- Professional Tools Used in Industry
- Modern C++ Features (C++11 through C++23)
- Industry-Standard Practices
- Comprehensive Project Structure
- Build structured, multi-file projects from day one
- Learn professional development workflows used in industry
- Master modern build systems and package management
- Deep dive into debugging and much more!
- Modern CMake for build management
- vcpkg for package management
- Industry-standard debugging tools
- Third-party library integration
- Complete IDE setup and optimization
- Master features from C++11 through C++23
- Work with and improve legacy codebases
- Write future-proof, modern C++ code
- Understand the "why" behind each feature
- Build systems with Modern CMake
- Package management with vcpkg
- Debugging workflows
- Code organization and best practices
- GUI development with SFML/ftxui
- Modern file handling with std::filesystem
- Game development fundamentals
- Data structures and algorithms
- Smart pointers and RAII
- Move semantics optimization
- Memory management
- STL containers and algorithms
- Complete Beginners wanting to learn C++ the right way
- Self-Taught Developers struggling with best practices
- Students & CS Majors seeking practical skills
- Professional Developers from Python/Java/C#
- Game Developers needing C++ expertise
- Systems Programmers requiring performance
- Anyone Serious about professional C++ development
Learn what employers actually need:
- β Modern C++ (C++11 through C++23)
- β Professional build systems
- β Package management
- β Real project structure
- β Debugging techniques
- β Best practices & patterns
- β 4.8/5 Rating
- π 60.5 hours of content
- π― 103 comprehensive lectures
- π» 18 hands-on exercises
- π Certificate of completion
- π± Mobile & TV access
- π Lifetime updates
"Not just another C++ courseβit's your complete pathway to professional C++ development."
Follow our comprehensive environment setup guide below to get started with modern C++ development across any platform.
Quick Setup Links:
- Windows Setup Guide
- Linux Setup Guide
- macOS Setup Guide
- Docker Setup Guide (Recommended for consistent environment)
This guide explains how to set up your development environment for the C++23 Masterclass course across different platforms.
π³ Why Docker? Using Docker provides a consistent, pre-configured environment that works identically across all platforms. It eliminates "works on my machine" issues and gives you instant access to the latest C++ tools without complex setup. Perfect for both beginners and professionals!
All platforms require these core tools:
- CMake (3.28.0 or higher)
- Ninja build system
- Git
- vcpkg package manager
- Visual Studio Code with extensions:
- C++ extensions (either Microsoft C++ or Clangd + CodeLLDB)
- CMake Tools
- CMake
- Docker (optional)
- Dev Containers (optional)
-
Install Visual Studio 2022
- Download from Visual Studio Website
- Select "Desktop development with C++" workload
- This provides the MSVC compiler (cl.exe)
-
Install CMake
- Download latest version from CMake's official site
- Ensure CMake is added to system PATH during installation
- Verify with
cmake --version
-
Install Ninja
- Download via WinLibs
- Add Ninja to system PATH
- Verify with
ninja --version
-
Install Git
- Download from Git's official site
- Add to system PATH during installation
- Configure user name and email
-
Install vcpkg
git clone https://github.com/microsoft/vcpkg.git C:\vcpkg cd C:\vcpkg .\bootstrap-vcpkg.bat
- Set VCPKG_ROOT environment variable to C:\vcpkg
-
Install Clang 19
wget https://apt.llvm.org/llvm.sh chmod +x llvm.sh sudo ./llvm.sh 19 all
Configure as default compiler:
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-19 100 sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-19 100
-
Install CMake
# Download and install latest CMake wget https://github.com/Kitware/CMake/releases/download/v3.31.6/cmake-3.31.6-linux-x86_64.sh chmod +x cmake-3.31.6-linux-x86_64.sh sudo ./cmake-3.31.6-linux-x86_64.sh --prefix=/opt/cmake-3.31.6 --skip-license sudo update-alternatives --install /usr/bin/cmake cmake /opt/cmake-3.31.6/bin/cmake 100
-
Install Ninja
sudo apt-get update sudo apt-get install wget unzip wget https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-linux.zip unzip ninja-linux.zip sudo mv ninja /usr/bin/ninja sudo chmod +x /usr/bin/ninja
-
Install vcpkg
git clone https://github.com/microsoft/vcpkg.git ~/vcpkg cd ~/vcpkg ./bootstrap-vcpkg.sh
Add to ~/.bashrc:
export VCPKG_ROOT=~/vcpkg export PATH=$VCPKG_ROOT:$PATH
-
Install Xcode Command Line Tools
xcode-select --install
-
Install CMake
- Download from CMake's official site
- Install the .dmg file
-
Install Ninja
brew install ninja
-
Install vcpkg
git clone https://github.com/microsoft/vcpkg.git ~/vcpkg cd ~/vcpkg ./bootstrap-vcpkg.sh
Add to ~/.zshrc:
export VCPKG_ROOT="$HOME/vcpkg" export PATH="$HOME/vcpkg:$PATH"
If you prefer a containerized environment or need access to the latest C++ features:
-
Install Docker
- Windows/Mac: Install Docker Desktop
- Linux: Install via package manager
sudo apt install docker # Ubuntu sudo dnf install docker # Fedora sudo pacman -S docker # Arch
-
Pull and Run Container
docker pull dgakwaya/gcc-clang:latest docker run -it --name cpp_dev -v <path_to_code>:/workspace dgakwaya/gcc-clang:latest
The container includes:
- GCC 14.2.0
- Clang 19.1.7
- CMake 3.31.6
- Ninja 1.12.1
- vcpkg
- GDB 13.1 and LLDB 19.1.7
-
Connect VS Code
- Install Remote-Containers extension
- Click green button in bottom-left corner
- Select "Attach to Running Container"
- Choose cpp_dev container
- Open /workspace in the container
After installation, verify your setup:
# Windows
cl.exe /?
cmake --version
ninja --version
vcpkg --version
# Linux/macOS
clang --version
cmake --version
ninja --version
vcpkg --version
All projects in this course follow this basic structure:
project/
βββ CMakeLists.txt
βββ CMakePresets.json
βββ main.cpp
βββ utilities.ixx (or .h/.cpp for header projects)
βββ vcpkg.json
βββ build/
To enable debugging in your projects, you'll need to configure a launch.json file in VS Code. The file should point to your project's compiled binary. The default binary paths vary by operating system and compiler. Here are the typical paths (replace "ProjectName" with your actual project name):
- Windows (MSVC):
build/cl/Debug/ProjectName.exe
- Linux/macOS (Clang):
build/linux-clang/Debug/ProjectName
- Docker (Clang):
build/linux-clang/Debug/ProjectName
Detailed instructions for configuring launch.json are provided in the course videos for each project.