- Require minimum CMake version with `cmake_minimum_required()` and use `project()` with VERSION and LANGUAGES.
- Use target-based commands (`target_link_libraries`, `target_include_directories`) instead of global `include_directories()` and `link_libraries()`.
- Require minimum CMake 3.14+ with `cmake_minimum_required(VERSION 3.14)` for modern features.
- Use target-based commands exclusively: `target_link_libraries()`, `target_include_directories()`, `target_compile_options()`.
- Use `FetchContent` or `find_package()` for dependency management — avoid manual path manipulation.
- Set `CMAKE_CXX_STANDARD` and `CMAKE_CXX_STANDARD_REQUIRED ON` to enforce a consistent C++ standard.
- Use generator expressions for build-type-specific flags: `$<$<CONFIG:Debug>:-fsanitize=address>`.