All Projects → biojppm → cmany

biojppm / cmany

Licence: MIT license
Easily batch-build cmake projects!

Programming Languages

python
139335 projects - #7 most used programming language
shell
77523 projects
CMake
9771 projects

Projects that are alternatives of or similar to cmany

l3build
A testing and building system for LaTeX
Stars: ✭ 63 (+320%)
Mutual labels:  build-automation, build-system, build-tools
Cbt
CBT - fun, fast, intuitive, compositional, statically checked builds written in Scala
Stars: ✭ 489 (+3160%)
Mutual labels:  build-automation, build-system, command-line-tool
build
Build system scripts based on GENie (https://github.com/bkaradzic/genie) project generator
Stars: ✭ 30 (+100%)
Mutual labels:  build-pipelines, build-automation, build-system
Flubucore
A cross platform build and deployment automation system for building projects and executing deployment scripts using C# code.
Stars: ✭ 695 (+4533.33%)
Mutual labels:  build-automation, build-system
obs-docu
Official Open Build Service Documentation. Content gets reviewed and edited. Generated books are available at http://www.openbuildservice.org
Stars: ✭ 26 (+73.33%)
Mutual labels:  build-automation, build-system
makesure
Simple task/command runner with declarative goals and dependencies
Stars: ✭ 230 (+1433.33%)
Mutual labels:  build-automation, build-system
Walk
A fast, general purpose, graph based build and task execution utility.
Stars: ✭ 108 (+620%)
Mutual labels:  build-automation, build-system
Redo
Smaller, easier, more powerful, and more reliable than make. An implementation of djb's redo.
Stars: ✭ 1,589 (+10493.33%)
Mutual labels:  build-automation, build-system
Hopp
Crazy rapid build system.
Stars: ✭ 24 (+60%)
Mutual labels:  build-automation, build-system
Earthly
Repeatable builds
Stars: ✭ 5,805 (+38600%)
Mutual labels:  build-automation, build-system
bazel rules pex
Python PEX rules for Bazel
Stars: ✭ 37 (+146.67%)
Mutual labels:  build-automation, build-system
jagen
A software engineer's workspace manager and build systems wrapper
Stars: ✭ 32 (+113.33%)
Mutual labels:  build-automation, build-system
Drone
Drone is a Container-Native, Continuous Delivery Platform
Stars: ✭ 24,287 (+161813.33%)
Mutual labels:  build-pipelines, build-automation
makeme
Embedthis MakeMe
Stars: ✭ 26 (+73.33%)
Mutual labels:  build-pipelines, build-automation
Pants
The Pantsbuild developer workflow system
Stars: ✭ 1,814 (+11993.33%)
Mutual labels:  build-system, build-tools
Build Harness
🤖Collection of Makefiles to facilitate building Golang projects, Dockerfiles, Helm charts, and more
Stars: ✭ 236 (+1473.33%)
Mutual labels:  build-automation, build-system
maestro
Faster CI/CD for multi-artifact projects
Stars: ✭ 13 (-13.33%)
Mutual labels:  build-pipelines, build-automation
b2
B2 makes it easy to build C++ projects, everywhere.
Stars: ✭ 38 (+153.33%)
Mutual labels:  build-system, build-tools
mixpanel-engage-query
Command line tool to query the MixPanel Engage API for People Data.
Stars: ✭ 48 (+220%)
Mutual labels:  command-line-tool
cpp-compiler-options
Compilation options for different versions of Clang, GCC and MSVC. Provided a generator and different file formats (cmake, xmake, meson, premake5, bjam/b2, ...)
Stars: ✭ 19 (+26.67%)
Mutual labels:  build-system

Chat on Gitter License: MIT Version Supported Python versions

Documentation status Linux+OSX build status Windows build status LGTM Grade LGTM Alerts

cmany

Easily batch-build cmake projects!

cmany is a command line tool to easily build variations of a CMake C/C++ project. It combines different compilers, cmake build types, bundles of compilation flags, processor architectures and operating systems. Each of these items can also have associated compilation flags.

For example, to configure and build a project combining clang++ and g++ with both Debug and Release:

$ cmany build -c clang++,g++ -t Debug,Release path/to/CMakeLists.txt

The command above will result in four different build trees, placed by default under a build subdirectory in the current working directory:

$ ls build/*
build/linux-x86_64-clang++3.9-Debug
build/linux-x86_64-clang++3.9-Release
build/linux-x86_64-gcc++6.1-Debug
build/linux-x86_64-gcc++6.1-Release

Each build tree is obtained by first configuring the project with the items in each combination, and then invoking cmake --build to build the project at once.

You can also use cmany just to simplify your cmake workflow! These two command sequences have the same effect (b is an alias to build):

typical cmake cmany
$ mkdir build
$ cd build
$ cmake ..
$ cmake --build .
$ cmany b

Features

  • Easily configures and builds many variations of your project with one simple command.
  • Saves the tedious and error-prone work of dealing with many build trees by hand.
  • Sensible defaults: cmany build will create and build a single project using CMake's defaults.
  • Transparently pass flags (compiler flags, processor defines or cmake cache variables) to any or all of the builds.
  • Useful for build comparison and benchmarking. You can easily setup bundles of flags, aka variants.
  • Useful for validating and unit-testing your project with different compilers and flags.
  • Useful for creating distributions of your project.
  • Avoids a full rebuild when the build type is changed. Although this feature already exists in multi-configuration cmake generators like Visual Studio, it is missing from mono-configuration generators like Unix Makefiles.
  • Runs arbitrary commands in every build tree or install tree.
  • Full control over how the build items are combined.

More info

Support

Current status

cmany is in alpha state, under current development.

Limitations & Known issues

  • cmany invokes the compilers given to it to find their name and version. So far, this successfully works with Visual Studio, gcc (also with arm-linux and mips-linux counterparts), clang, icc and zapcc. However, the current implementation for guessing the name and version is fragile and may fail in some compilers which were not tested. Please submit a bug or PR if you see such a failure.
  • Though cmany works in OS X with gcc and clang, using Xcode has not been tested at all. Get in touch if you are interested in getting cmany to work with Xcode.
  • Pure C projects (ie not C++) should work but have not yet been tested. Some bugs may be present.

License

cmany is permissively licensed under the MIT license.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].