Menu

Tree [d38736] default tip /
 History

Read Only access


File Date Author Commit
 .idea 2025-01-14 root root [6059b5] asda
 examples 2025-01-27 redbookx redbookx [d38736] START: Remove need for LINKERRR.
 sessions 2025-01-26 root root [160804] stuffy
 src 2025-01-27 redbookx redbookx [d38736] START: Remove need for LINKERRR.
 .DS_Store 2025-01-26 root root [160804] stuffy
 .MIGRATING.md.swp unknown
 .README.md.swp 2025-01-12 root root [c48539] spec
 .SHELL.md.swp unknown
 .hgignore unknown
 .hgignore.swp 2025-01-14 root root [6059b5] asda
 .todo.md unknown
 .todo.md.swo 2025-01-15 root root [8cddac] reading compiler + linker args from Project.toml
 .todo.md.swp unknown
 .vimspector.json unknown
 Cargo.lock unknown
 Cargo.toml unknown
 HEADERS.md unknown
 INSTALL.md 2025-01-14 root root [d3de0b] refactoring
 MIGRATING.md 2025-01-14 root root [30b931] Updated Specs
 README.md 2025-01-14 root root [6059b5] asda
 SHELL.md unknown
 asd 2025-01-27 redbookx redbookx [d38736] START: Remove need for LINKERRR.
 asdasdads 2025-01-27 redbookx redbookx [d38736] START: Remove need for LINKERRR.
 game 2025-01-15 root root [40fd39] fixed shell
 hello_headers 2025-01-15 root root [8f1f93] added header support
 hello_world 2025-01-15 root root [8cddac] reading compiler + linker args from Project.toml
 session.vim 2025-01-14 root root [6059b5] asda
 test.dot 2025-01-26 root root [160804] stuffy

Read Me

Cross Unified Multiplexer (C.U.M)

A more sensible build system for C/C++

Operation

Each CUM project is specified by a Project.toml file
Each project is expected to have a sources and headers directory in the same directory as the Project.toml

All .c/.cpp files are compiled into .o files
All .h/.hpp files are included as -isystem system headers and -I user headers

# Some More Details on Headers

In an effort to be cross-compatable with other C/C++ projects using other build systems, additional header paths are added to the compiler flags to avoid compiler errors

Usage

Assuming the binary is in your PATH...

cum init - Crate a CUM project (binary/library)
cum build [project_root] - Build a debug binary
cum release [project_root] - Run release build/package script
cum lint - Run source Code Linter
cum docs - Alternative to Doxygen
cum serve - Run the build debugger web server
cum include - Generate the include path compiler flags (WARNING: it's alot. i recomend cum include > .txt)
cum clean - Remove the buildcache/ folder
cum tree - Build a dependency graph (BETA)
cum run [debug/release] <binary> - Build and Run the specified binary

Project.toml

# Required Variables
compiler = <compiler executable path>
linker = <linker executable path>
# Optional Variables
build_dir = <default: "buildcache/">
debug_flags = [<override the default debug compiler flags>]
release_flags = [<override the default release compiler flags]
release_script = <release .sh/.bat script/executable>
no_confirm = <true/false>           # Enable or disable the splash confirmation dialog

Install Dependencies

git/hg clone <repoistory> into the same directory as your Project.toml

[Dependency]
path = "./sdl2"

[Dependency]
path = "./glfw"

[Dependency]
path = "./glad"

Remove Dependencies

rm -rf <repository> lol
Also remove the [Dependency] from your .toml

Targets

You can build either libraries or executable binaries.
If you chose to build a library you can choose to link your library dynamically. Do note that this is a security risk and should only be done if you intend to provide your end-users with modding support or are trying to create your own bloaty Java/NodeJS alternative

[Target]
type = <lib/bin>
lib = <static/dynamic>
entrypoint = *.cpp/.c
name = <binary name>
libs = [...]

Platform Support

CUM supports Windows/OSX/Linux

Contributing

Install the .vimrc from ...
vim -S session.vim

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.