The little C kit

Overview

ckit

The little C kit

  • bin/ckit — tool for building and testing projects (calls cmake & ninja)
  • pkg/ — directory of some packages
    • The main thing here is rbase — basic functionality for C projects
  • ckit.cmake — CMake helper file

bin/ckit

This multitool provides a few convenience commands:

  • ckit build or ckit — build project of current directory
  • ckit test — build & run tests
  • ckit watch — build & run as sources files change
  • ckit init — generate cmakelists.txt file for a project

See ckit -help for details or have a look at an example project

Installing

ckit can be installed in two ways:

  • Placed in a shared location, for example ~/ckit
  • "Vendored" as a subfolder in a project, for example myproject/ckit

Example of ckit installed in a shared location:

git clone https://github.com/rsms/ckit.git ~/ckit
export CKIT_DIR=$HOME/ckit
export PATH=$PATH:$CKIT_DIR/bin
mkdir ~/myproject
cd ~/myproject
echo "int main() { return 0; }" > hello.c
ckit init   # creates cmakelists.txt
ckit build  # produces out/debug/myproject (or .a if there's no main)
./out/debug/myproject
ckit test   # builds & runs out/debug-test/myproject-test

Example of ckit as a subdirectory:

mkdir ~/myproject
cd ~/myproject
git clone https://github.com/rsms/ckit.git
echo "int main() { return 0; }" > hello.c
./ckit/bin/ckit init   # creates cmakelists.txt
./ckit/bin/ckit build  # produces out/debug/myproject (or .a if there's no main)
./out/debug/myproject
./ckit/bin/ckit test   # builds & runs out/debug-test/myproject-test

Dependencies:

  • modern C shell like zsh, bash, ash or hush
  • modern C compiler like clang 10 or GCC 10 (one that supports C11)
  • ninja
  • cmake >=3.12

Additionally, the ckit watch command requires:

Note that you don't have to use bin/ckit. ckit packages are plain CMake projects and thus you can just use CMake if you want.

Notes

Some CMake reading:

You might also like...
a little hobby raspberry pi pico emulator

PICO-EMU a little raspberry pi pico emulator note: we use the provided bootrom from raspberry pi at the repo: https://github.com/raspberrypi/pico-boot

A fun little project to test out the mic on the M5Stack CORE2
A fun little project to test out the mic on the M5Stack CORE2

M5Stack Core 2 Audio You can watch a video explainer here (YouTube) which goes into a bit more detail on the audio capabilities of the device. This pr

ESP32 Audio Kit based multitrack looper

esp32_multitrack_looper ESP32 Audio Kit based multitrack looper The project can be seen in my video https://youtu.be/PKQmOsJ-g1I The project has been

Poc to test my little friend features without any sdk

poc.vic-hack POC to test my little friend "vector" features without any sdk Ultimate goal - being able to write own firmware components without propri

Android Bindings for QuickJS, A fine little javascript engine.

quickjs-android quickjs-android 是 QuickJS JavaScript 引擎的 Android 接口框架,整体基于面向对象设计,提供了自动GC功能,使用简单。armeabi-v7a 的大小仅 350KB,是 Google V8 不错的替代品,启动速度比 V8 快,内

RT-AK: RT-Thread AI Kit,RT-Thread AI 套件

RT-AK 是 RT-Thread AI 团队为 RT-Thread 实时操作系统所开发的 AI 套件,能够将 AI 模型一键部署到 RT-Thread 项目中。

Anya is a KBAG decryption kit for JTAGable prototypes.

Anya It's a beta, so be extremely careful when using this software and always validate results it gives you Anya is a KBAG decryption kit for JTAGable

KVDK (Key-Value Development Kit) is a key-value store library implemented in C++ language

KVDK (Key-Value Development Kit) is a key-value store library implemented in C++ language. It is designed for persistent memory and provides unified APIs for both volatile and persistent scenarios. It also demonstrates several optimization methods for high performance with persistent memory. Besides providing the basic APIs of key-value store, it offers several advanced features, like transaction, snapshot as well.

httpserve - Spin up a little http server from the commandline.

httpserve - Spin up a little http server from the commandline.

A little experiment to have multicore OCaml with effects on iOS. In particular the GCD backend for eio.

Effects on iOS Very WIP & Experimental Overview A little experiment to have multicore OCaml with effects on iOS (currently just the simulator). In par

A handy little system information monitor using and ESP32 + ILI9488 TFT. Receives data over Serial Bluetooth.
A handy little system information monitor using and ESP32 + ILI9488 TFT. Receives data over Serial Bluetooth.

Bluetooth-System-Monitor A handy little system information monitor using and ESP32 + ILI9488 TFT. Receives data over Serial Bluetooth and thus giving

Tiny Mobile Terminal Device Kit.
Tiny Mobile Terminal Device Kit.

Tiny Mobile Terminal Device Kit.

A little VST to test playhead reading

TempoTester This is a little AU/VST3 which just puts al the playhead information on the screen, useful for debugging DAWs. Standard instructions clone

a Little Computer 3 simulator

smol3 🖥️ a Little Computer 3 simulator smol3 is a tiny LC3 simulator written in C. It aims to be fast and correct. TODO read input binary files write

Open source digital sound effects based on JACK audio connection kit.

Noiseworks Digital Audio Effects Repository Open source digital sound effects based on JACK audio connection kit. This repository is intended to provi

A little utility to look for updates on Gentoo written in C++
A little utility to look for updates on Gentoo written in C++

A little utility to look for updates on Gentoo written in C++

A little Trojan I wrote in a few days, creating GDI screen effects.

Monoxide A little Trojan I wrote in a few days, creating GDI screen effects. PSA This project is licensed with AGPL 3.0! In short, this means if you d

FFmpeg Kit for applications. Supports Android, Flutter, iOS, macOS, React Native and tvOS. Supersedes MobileFFmpeg, flutter_ffmpeg and react-native-ffmpeg.
FFmpeg Kit for applications. Supports Android, Flutter, iOS, macOS, React Native and tvOS. Supersedes MobileFFmpeg, flutter_ffmpeg and react-native-ffmpeg.

FFmpeg Kit for applications. Supports Android, Flutter, iOS, macOS, React Native and tvOS. Supersedes MobileFFmpeg, flutter_ffmpeg and react-native-ffmpeg.

Owner
Rasmus
Languages, compilers, making computers talk with eachother, and other fun things. Professional life is at Figma; previously Facebook, Spotify, Dropbox and more
Rasmus
A Linux reference software for building the Demo Core-Image on Renesas RZ/V2M Evaluation Kit

Introduction This repository is a Linux reference software for building the Demo Core-Image on Renesas RZ/V2M Evaluation Kit . You have to get the pro

Lexra Chang 3 Jan 20, 2022
The little C kit

ckit The little C kit bin/ckit — tool for building and testing projects (calls cmake & ninja) pkg/ — directory of some packages The main thing here is

Rasmus 44 Dec 17, 2022
The DirectX Tool Kit (aka DirectXTK) is a collection of helper classes for writing DirectX 11.x code in C++

DirectX Tool Kit for DirectX 11 http://go.microsoft.com/fwlink/?LinkId=248929 Copyright (c) Microsoft Corporation. All rights reserved. January 9, 202

Microsoft 2.2k Jan 3, 2023
Data Plane Development Kit

DPDK is a set of libraries and drivers for fast packet processing. It supports many processor architectures and both FreeBSD and Linux. The DPDK uses

DPDK 2.2k Dec 29, 2022
A little UNIX-inspired terminal application for the Numworks Calculator (not using escher).

L.E. Terminal (let for short) is a little UNIX-inspired terminal for the Numworks Calculator.

Cacahuète Sans Sel 20 Aug 31, 2022
Just a fun little project to learn how to render Bézier Curves.

Bézier Curve Just a fun little project to learn how to render Bézier Curves. CPU implementation GPU implementation Screencasts Thumbnail Link Coding B

Tsoding 18 Dec 17, 2022
Arduino sample code to help you get started using the Soracom IoT Starter Kit!

Soracom IoT Starter Kit The Soracom IoT Starter Kit includes everything you need to build your first connected device. It includes an Arduino MKR GSM

Soracom Labs 13 Jul 30, 2022
QuickCheck clone for C++ with the goal of being simple to use with as little boilerplate as possible.

RapidCheck RapidCheck is a C++ framework for property based testing inspired by QuickCheck and other similar frameworks. In property based testing, yo

null 860 Dec 27, 2022
Four little games made in C / C++ (CSFML / SFML)

Graphical projects Name Language Grade Year My hunter C / CSFML B 2017 My runner C / CSFML B 2017 My world C / CSFML B 2018 My rpg C / CSFML A 2018 Re

Luis Rosario 11 Dec 30, 2022
🍦IceCream-Cpp is a little (single header) library to help with the print debugging on C++11 and forward.

??IceCream-Cpp is a little (single header) library to help with the print debugging on C++11 and forward.

Renato Garcia 422 Dec 28, 2022