Native DeepCleanMyMac macOS app. The UI is AppKit (Objective-C++). All scanning, hashing, safety checks, and trashing go through dcmmlib as a Git submodule — no engine logic lives here.
dcmm-desktop/
include/ App headers (AppDelegate, Modules, ui/)
src/ AppKit implementations
extras/dcmmlib/ git submodule (engine)
tests/ GoogleTest (engine link + module titles)
If the submodule is missing, CMake will also accept a sibling ../dcmmlib checkout.
make init # first time: extras/dcmmlib submodule
make # debug (default)
make build release
make test
make run # open DeepCleanMyMac.app
make cleanmake help lists presets (debug / release / all), relaunch, and test release.
Equivalent with CMake presets:
git submodule update --init extras/dcmmlib
cmake --preset release
cmake --build --preset release
ctest --preset release
open build/release/DeepCleanMyMac.appDebug: --preset debug (output in build/debug).
Equivalent without presets:
cmake -S . -B build -G Ninja \
-DCMAKE_TOOLCHAIN_FILE=cmake/llvm-clang.cmake \
-DCMAKE_BUILD_TYPE=Release
cmake --build build
ctest --test-dir build --output-on-failure
open build/DeepCleanMyMac.app- Smart Scan — recommended groups only (
~/Library/Caches, logs, saved state) - System Junk — every cache and leftover, item by item (npm, Cargo, Xcode, Darwin tmp, …)
- Large files and SHA-256 duplicates
- App uninstaller + leftover files
- Privacy (browser caches)
- Space Lens (home-folder usage)
- Maintenance (empty Trash, flush DNS, rebuild Launch Services)
Selected items are moved to Trash by dcmmlib. Protected paths are rejected by the engine.