A lightweight CLI to clone, configure, and wire single or multi-repo CMake ecosystems.
# Interactive mode
star-setup
# Single-repo mode
star-setup username/repo
# Mono-repo mode
star-setup username/repo --repos user/lib1 user/lib2- Git
- CMake
Download the latest binary from Releases, or:
brew install star-setup/tap/star-setupnpm install -g @star-setup/star-setupcurl --proto '=https' --tlsv1.2 -LsSf https://github.com/star-setup/core/releases/latest/download/star-setup-installer.sh | shpowershell -ExecutionPolicy Bypass -c "irm https://github.com/star-setup/core/releases/latest/download/star-setup-installer.ps1 | iex"pip install star-setupDownload the .msi from Releases.
cargo install --git https://github.com/star-setup/coreRunning star-setup without arguments launches interactive mode, guiding you through all options.
Star Setup Interactive Mode
Enter repository (user/repo or URL): user/repo
Use SSH? (y/n) [N]:
Verbose? (y/n) [N]:
Clean build directory if exists? (y/n) [N]:
Select mode: (1) Single Repo (2) Mono-Repo: 1
Build type [Debug]:
Build directory [build]:
Additional CMake args (space separated):
Configure only (skip build)? (y/n) [N]:
Interactive mode complete
# Clone and build via HTTPS
star-setup username/repo
# Clone and build via SSH
star-setup username/repo --ssh
# Common flags
star-setup username/repo --build-type Release
star-setup username/repo --build-dir out
star-setup username/repo --no-build
star-setup username/repo --clean
star-setup username/repo --verbose
star-setup username/repo --cmake-arg=-DCMAKE_CXX_COMPILER=clang++Clones multiple repositories into a single workspace and generates a root CMakeLists.txt that wires them together as subdirectories.
# Manual repo list
star-setup username/repo --repos user/lib1 user/lib2
# Use a saved profile
star-setup username/repo --profile myprofile
# With SSH and custom directory
star-setup username/repo --repos user/lib1 user/lib2 --ssh --mono-dir my-workspacebuild-mono/
├── CMakeLists.txt # Auto-generated root project
├── lib1/
├── lib2/
├── my-repo/ # Test repository
└── build/ # Build output
Mono-repo mode sets -DBUILD_LOCAL=ON when configuring CMake. This flag tells your test repository to link against local module directories instead of fetching them remotely via FetchContent:
# In your test repo's CMakeLists.txt
if(NOT BUILD_LOCAL)
FetchContent_Declare(mylib
GIT_REPOSITORY https://github.com/user/mylib.git
GIT_TAG main
)
endif()This allows the same repository to work both standalone (fetching dependencies automatically) and inside a mono-repo workspace (linking locally for full cross-module debugging).
Profiles represent a saved ecosystem of libraries commonly used together.
# Add a profile
star-setup --profile-add myprofile user/lib1 user/lib2
# List profiles
star-setup --list-profiles
# Remove a profile
star-setup --profile-remove myprofile
# Use a profile
star-setup username/repo --profile myprofileConfig files are checked in this order:
./.star-setup.json(current directory)~/.star-setup.json(home directory)
# Initialize a default config file
star-setup --init-config
# Add a named config
star-setup --config-add myconfig --ssh --build-type Release
# List configs
star-setup --list-configs
# Remove a config
star-setup --config-remove myconfig
# Use a config
star-setup username/repo --config myconfiggit clone https://github.com/star-setup/core
cd core
cargo test
cargo clippy --all-targets -- -D warningsMIT License — see LICENSE for details.