CMake Scaffolding

sniffercommit init --enable-cmake generates a production-grade CMakeLists.txt and a minimal src/main.cpp:

$ sniffercommit init --enable-cmake

Creates:

CMake Options

FlagValuesDefaultDescription
--cmake-cpp-standard17, 20, 2320C++ standard version
--cmake-target-typeexecutable, static, shared, header-onlyexecutableBuild target type
--cmake-enable-testing(flag)offAdd enable_testing() + add_subdirectory(tests)
--cmake-enable-sanitizers(flag)offAddressSanitizer + UBSan (Debug only)
--enable-conan(flag)offGenerate conanfile.py alongside CMakeLists.txt for Conan package manager

What the Generated CMakeLists.txt Includes

Examples

# Minimal C++20 executable project
$ sniffercommit init --enable-cmake

# C++17 static library with testing
$ sniffercommit init --enable-cmake --cmake-cpp-standard 17 --cmake-target-type static --cmake-enable-testing

# Full-featured project with clang-tidy + sanitizers
$ sniffercommit init \
  --enable-cmake \
  --cmake-cpp-standard 20 \
  --cmake-enable-testing \
  --cmake-enable-sanitizers \
  --enable-clang-tidy \
  --tidy-preset strict \
  --style google

# Header-only library (no src/main.cpp generated)
$ sniffercommit init --enable-cmake --cmake-target-type header-only

# Project with Conan package manager support
$ sniffercommit init --enable-cmake --enable-conan

# Full-featured project with Conan + clang-tidy + testing
$ sniffercommit init \
  --enable-cmake \
  --enable-conan \
  --cmake-cpp-standard 20 \
  --cmake-enable-testing \
  --enable-clang-tidy \
  --tidy-preset strict \
  --style google

Generate src/main.cpp Without CMake

$ sniffercommit init --generate-src

Creates only src/main.cpp, no CMakeLists.txt.

Conan Package Manager Integration

When --enable-conan is passed with --enable-cmake, sniffercommit generates:

The generated conanfile.py includes:

What the generated CMakeLists.txt includes (with Conan):

Usage:

# Generate with Conan support
$ sniffercommit init --enable-cmake --enable-conan

# Build with Conan
$ conan install . --output-folder=build --build=missing
$ cmake -B build -DCMAKE_TOOLCHAIN_FILE=build/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release
$ cmake --build build