Documentation

CCLM is a command-line tool created by Rudolf Müller in C++ for managing C/C++ libraries.

Libraries can be installed from Git repositories Prototype written in Python.

POSIX only

PlatformCompatibility
Linux✔️ Yes
macOS⚙️ Untested
Windows❌ Definitely not

Why CCLM

+ Advantages

- Disadvantages

Installation for pacman (archlinux)

„sorry but if you want install on other distros than arch, pls wait“ - Rudolf Müller 2026

Clone the repository:
$ git clone "https://github.com/rudolfmuller/cclm-package-manager.git"
Go in to the repo:
$ cd cclm-package-manager
Make tar file (xyz is version, ok? ok ,ok):
$ tar -czf cclm-x.y.z.tar.gz . 
Make package, and install:
$ makepkg -si
Tests cclm if works:
$ cclm -v
Remove build directory:
$ rm -rf cclm-package-manager
All-in-one line (I dont recommend):
$ git clone "https://github.com/rudolfmuller/cclm-package-manager.git" && cd cclm-package-manager && tar -czf cclm-x.y.z.tar.gz . && makepkg -si && cclm -v && cd .. && rm -rf cclm-package-manager

Quick Start

Using and Installing a Library

  1. Install the necessary library:
    $ cclm install "rudolfmuller" "fmt-lib"
  2. Initialize your project:
    $ cclm init
    and edit the configuration file as needed.
  3. Run your project:
    $ cclm run

Creating a Library

  1. Initialize the library:
    $ cclm init --lib
    and edit the configuration file as needed.
  2. Upload it to GitHub, ideally with the suffix -lib to indicate that it is a library.

Environmental variables

All default paths are based on $PATH
so if you store programs in $PATH, you will don't need to use export.


Environment variable Default value Description
$CCLM_CCLM_FILE_NAME ccfile Name of the library metadata file
$CCLM_GIT_PATH git Path to the git executable
$CCLM_GCC_PATH gcc Path to the GCC C compiler
$CCLM_GXX_PATH g++ Path to the GCC C++ compiler
$CCLM_AR_PATH ar Path to the static library archiver
Example:
$ export CCLM_GIT_PATH=/usr/bin/git

Commands

FlagDescription
--version / -vShow current CCLM version
--help / -hShow help message
--force / -fExecute command without confirmation
--url / -uTakes the raw url address instead of the author and package name
--lib / -LSwitch for init mode to library
--local / -lSwitch for install to local mode
--debug / -dSwitch to debug mode
Always place switches at the end of the command.

$ cclm install -u "https://github.com/rudolfmuller/ctml-lib.git"
output:
fatal: library is not accessible
log:
error: unknown switch `u'
usage: git ls-remote [--branches] [--tags] [--refs] [--upload-pack=<exec>]
                     [-q | --quiet] [--exit-code] [--get-url] [--sort=<key>]
                     [--symref] [<repository> [<patterns>...]]

    -q, --[no-]quiet      do not print remote URL
    --[no-]upload-pack <exec>
                        path of git-upload-pack on the remote host
    -t, --[no-]tags       limit to tags
    -b, --[no-]branches   limit to branches
    --[no-]refs           do not show peeled tags
    --[no-]get-url        take url.<base>.insteadOf into account
    --[no-]sort <key>     field name to sort on
    --[no-]exit-code      exit with exit code 2 if no matching refs are found
    --[no-]symref         show underlying ref in addition to the object pointed by it
    -o, --[no-]server-option <server-specific>
                        option to transmit


init – Initalizon the cclm project. Supports -L.
$ cclm init [-L]
The init command may fail if the folder is not empty.
Before using it, please make sure that the folder you want to initialize is really empty (there could be a collision of names).

install – Downloads a repository from GitHub, stores it in the .cclm folder, and compiles it. Supports -f -u -l.
$ cclm install <user> <repo> [-f] [-u] [-l]
remove – Removes a library and its metadata. Supports -f.
$ cclm remove <library_name> [-f]
run – Compile and run your project.
$ cclm run
purge – Deletes binaries and residual files of a library. Supports -f.
$ cclm purge [-f]
template – Copies a file from the templates folder to create a project template.
$ cclm template <template_name>
search – Checks if a repository exists on GitHub.
$ cclm search <user> <repo>
exist – Checks if a library is installed.
$ cclm exist <library_name>
ls – Lists all libraries in the .cclm folder.
$ cclm ls
clean – Remove unnecessary files.
$ cclm clean
git – Calls the git command and passes arguments (for debugging purposes).
$ cclm git <git_args>
info – Displays library metadata.
$ cclm info <library_name>
report – Opens the library's GitHub repository to report issues in the browser.
$ cclm report <library_name>
website – Opens the library's website in the browser.
$ cclm website <library_name>
export – Creates an export file containing the URL address for installing libraries (sum file)
$ cclm export
import – Can import (install) libraries from library_export.txt or other
$ cclm import <file_name>
clone – Clone from git repository.
$ cclm clone <user> <repo>