Keep the source tree clean by building in a separate directory (makes it easier to clean up builds):
cmake -S . -B buildSpecify the minimum required version in CMakeLists.txt to ensure compatibility:
cmake_minimum_required(VERSION 3.31)Avoid manual inclusion of files or libraries; use targets instead. For example:
target_include_directories(MyTarget PRIVATE include/)Commands like include_directories() apply to all targets and can introduce unintended dependencies. Always scope settings to specific targets.
Always separate Debug and Release builds to avoid conflicts:
cmake -S . -B build-debug -DCMAKE_BUILD_TYPE=Debug
cmake -S . -B build-release -DCMAKE_BUILD_TYPE=Release