GUI-free C++ engine for DeepCleanMyMac and any other front end. Scan junk, find large and duplicate files, list leftover app files, and move selected paths to the platform trash. Native binaries, LLVM/Clang, CMake + Ninja.
The library has no GUI code. Desktop, CLI, or another toolkit (Qt, wx, WinUI, GTK) talks to it through the C++ API or the C ABI.
- C++ (
#include <dcmm/dcmm.hpp>) —dcmm::Engineis the facade. - C ABI (
#include <dcmm/dcmm.h>) —dcmm_create/dcmm_scan_junk/dcmm_trash_pathsfor FFI and other languages.
Override DCMM_HOME (and optionally DCMM_TRASH) in tests so scans never touch a real home directory.
Protected locations (system trees, ~/Documents itself, keychains, .ssh, Photos libraries, …) are never sent to Trash.
cmake --preset release
cmake --build --preset release
ctest --preset releaseDebug: --preset debug. Artifacts go in build/release or 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-failureProduces libdcmm.a (default) and dcmm-cli.
./build/release/dcmm-cli disk
./build/release/dcmm-cli smart
./build/release/dcmm-cli junkShared library: -DDCMM_BUILD_SHARED=ON.
| Path | Role |
|---|---|
include/dcmm/ |
Public headers |
src/ |
Engine (scan, hash, trash, catalogs) |
tests/ |
GoogleTest |
cli/ |
Optional smoke tool |
Platform backends live behind #if in the engine (macOS, Linux, Windows). Trash uses ~/.Trash / Freedesktop Trash / Recycle Bin (FOF_ALLOWUNDO).
Development happens on dev. main is stable. See CONTRIBUTING.md. Please follow the code of conduct. Security issues: SECURITY.md.
MIT.