Skip to main content

Utilities to help develop C++/CMake projects

Project description

cmake-common

Basic usage Boost (toolsets) Examples (toolsets)

Utilities to help develop C++/CMake projects.

Description

This main goal of this project is to make it easier to build (potentially, cross-compile) Boost and CMake projects using different toolsets. It does so providing a set of command-line utilities that allow users to download/build Boost & use it in a CMake project in a consistent way — no matter the compiler or the target platform.

Installation

  • Via PyPI:

    pip install cmake-common
    
  • As a submodule:

    git submodule add https://github.com/egor-tensin/cmake-common.git
    

    All the scripts provided by the PyPI package are thin wrappers around the project package modules:

    Script Module
    boost-download python -m project.boost.download
    boost-build python -m project.boost.build
    project-build python -m project.build

Toolsets

Supported platform/build system/compiler combinations include, but are not limited to:

Platform Build system Compiler
Linux make Clang
GCC
MinGW-w64
Windows make [1] Clang [2]
MinGW-w64
msbuild MSVC
  1. Both GNU make and MinGW mingw32-make.
  2. clang-cl is supported by Boost 1.69.0 or higher only.

All of those are verified continuously by the Boost (toolsets) and Examples (toolsets) workflows.

For a complete list of possible --toolset parameter values, pass the --help-toolsets flag to either boost-build or project-build.

Usage

Boost

Download & build the Boost libraries in a cross-platform way.

$ boost-download 1.72.0
...

$ boost-build boost_1_72_0/ filesystem program_options
...

Pass the --help flag to view detailed usage information.

CMake project

Build (and optionally, install) a CMake project.

$ project-build --configuration Release --install path/to/somewhere --boost path/to/boost -- examples/simple build/
...

$ ./path/to/somewhere/bin/foo
foo

Pass the --help flag to view detailed usage information.

Tools

Examples

I use this in all of my C++/CMake projects, e.g. aes-tools and math-server.

Development

Make a git tag:

git tag "v$( python -m setuptools_scm --strip-dev )"

You can then review that the tag is fine and push w/ git push --tags.

License

Distributed under the MIT License. See LICENSE.txt for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cmake_common-6.0.1.tar.gz (38.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cmake_common-6.0.1-py3-none-any.whl (29.6 kB view details)

Uploaded Python 3

File details

Details for the file cmake_common-6.0.1.tar.gz.

File metadata

  • Download URL: cmake_common-6.0.1.tar.gz
  • Upload date:
  • Size: 38.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for cmake_common-6.0.1.tar.gz
Algorithm Hash digest
SHA256 c8ed2d3c3210aadec1b7d8aa1345f688af2663fd98ae955df40588babd7066ff
MD5 c4c590c95be13e1b514fea8055793c94
BLAKE2b-256 634d6346966fa9123377650c31126dfb8c9b450a4fae2a18c2e804402f2d3e14

See more details on using hashes here.

File details

Details for the file cmake_common-6.0.1-py3-none-any.whl.

File metadata

  • Download URL: cmake_common-6.0.1-py3-none-any.whl
  • Upload date:
  • Size: 29.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for cmake_common-6.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e847cdb807d9f8cb115aaa344741810ac03de7920f727f78017acafe90e983c7
MD5 c6e9fb97a139d97cc4e85044c604ee5f
BLAKE2b-256 6c264b1a3d24972353c18371134b3990e1993148bdf15be933748d5ecc46cac6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page