Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/clibs/clib
Package manager for the C programming language.
https://github.com/clibs/clib
c clib manager package
Last synced: 2 days ago
JSON representation
Package manager for the C programming language.
- Host: GitHub
- URL: https://github.com/clibs/clib
- Owner: clibs
- License: mit
- Created: 2012-10-28T07:50:09.000Z (about 12 years ago)
- Default Branch: master
- Last Pushed: 2024-09-03T20:55:59.000Z (3 months ago)
- Last Synced: 2024-12-03T01:02:46.553Z (9 days ago)
- Topics: c, clib, manager, package
- Language: C
- Homepage:
- Size: 813 KB
- Stars: 4,878
- Watchers: 131
- Forks: 245
- Open Issues: 26
-
Metadata Files:
- Readme: Readme.md
- Changelog: History.md
- License: LICENSE
Awesome Lists containing this project
- awesome-discoveries - clib - package manager for the C programming language _(`C`)_ (Libraries)
README
# clib(1)
![Build Status](https://github.com/clibs/clib/actions/workflows/tests.yml/badge.svg)
[![Codacy Badge](https://app.codacy.com/project/badge/Grade/a196ec36c31349e18b6e4036eab1d02c)](https://www.codacy.com/gh/clibs/clib?utm_source=github.com&utm_medium=referral&utm_content=clibs/clib&utm_campaign=Badge_Grade)Package manager for the C programming language.
![c package manager screenshot](https://i.cloudup.com/GwqOU2hh9Y.png)
## Installation
Expects [libcurl](http://curl.haxx.se/libcurl/) to be installed and linkable.
With [homebrew](https://github.com/Homebrew/homebrew):
```sh
$ brew install clib
```Or [MacPorts](https://www.macports.org):
```sh
$ sudo port selfupdate
$ sudo port install clib
```With git:
```sh
$ git clone https://github.com/clibs/clib.git /tmp/clib
$ cd /tmp/clib
$ make install
```Ubuntu:
```sh
# install libcurl
$ sudo apt-get install libcurl4-gnutls-dev -qq
# clone
$ git clone https://github.com/clibs/clib.git /tmp/clib && cd /tmp/clib
# build
$ make
# put on path
$ sudo make install
```Fedora:
```sh
# install libcurl
$ sudo dnf install libcurl-devel
# clone
$ git clone https://github.com/clibs/clib.git /tmp/clib && cd /tmp/clib
# build
$ make
# put on path
$ sudo make install
```## About
Basically the lazy-man's copy/paste promoting smaller C utilities, also
serving as a nice way to discover these sort of libraries. From my experience
C libraries are scattered all over the web and discovery is relatively poor. The footprint of these libraries is usually quite large and unfocused. The goal of `clibs` is to provide
stand-alone "micro" C libraries for developers to quickly install without coupling
to large frameworks.You should use `clib(1)` to fetch these files for you and check them into your repository, the end-user and contributors should not require having `clib(1)` installed. This allows `clib(1)` to fit into any new or existing C workflow without friction.
The wiki [listing of packages](https://github.com/clibs/clib/wiki/Packages) acts as the "registry" and populates the `clib-search(1)` results.
## Usage
```
clib [options]Options:
-h, --help Output this message
-V, --version Output version informationCommands:
init Start a new project
i, install [name...] Install one or more packages
up, update [name...] Update one or more packages
upgrade [version] Upgrade clib to a specified or latest version\
configure [name...] Configure one or more packages
build [name...] Build one or more packages
search [query] Search for packages
help Display help for cmd
```More about the Command Line Interface [here](https://github.com/clibs/clib/wiki/Command-Line-Interface).
## Examples
More examples and best practices at [BEST_PRACTICE.md](https://github.com/clibs/clib/blob/master/BEST_PRACTICE.md).
Install a few dependencies to `./deps`:
```sh
$ clib install clibs/ms clibs/commander
```Install them to `./src` instead:
```sh
$ clib install clibs/ms clibs/commander -o src
```When installing libraries from the `clibs` org you can omit the name:
```sh
$ clib install ms file hash
```Install some executables:
```sh
$ clib install visionmedia/mon visionmedia/every visionmedia/watch
```## clib.json
Example of a clib.json explicitly listing the source:
```json
{
"name": "term",
"version": "0.0.1",
"repo": "clibs/term",
"description": "Terminal ansi escape goodies",
"keywords": ["terminal", "term", "tty", "ansi", "escape", "colors", "console"],
"license": "MIT",
"src": ["src/term.c", "src/term.h"]
}
```Example of a clib.json for an executable:
```json
{
"name": "mon",
"version": "1.1.1",
"repo": "visionmedia/mon",
"description": "Simple process monitoring",
"keywords": ["process", "monitoring", "monitor", "availability"],
"license": "MIT",
"install": "make install"
}
```See [explanation of clib.json](https://github.com/clibs/clib/wiki/Explanation-of-clib.json) for more details.
## Contributing
If you're interested in being part of this initiative let me know and I'll add you to the `clibs` organization so you can create repos here and contribute to existing ones.
If you have any issues, questions or suggestions, please open an issue [here](https://github.com/clibs/clib/issues).
You can also find us on Gitter: https://gitter.im/clibs/clib
Also feel free to open a GitHub Discussion [here](https://github.com/clibs/clib/discussions).Before committing to the repository, please run `make commit-hook`. This installs a commit hook which formats `.c` and `.h` files.
## Articles
- [Introducing Clib](https://medium.com/code-adventures/b32e6e769cb3) - introduction to clib
- [The Advent of Clib: the C Package Manager](https://web.archive.org/web/20200128184218/http://blog.ashworth.in/2014/10/19/the-advent-of-clib-the-c-package-manager.html) - overview article about clib