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 python3 -m project.boost.download
    boost-build python3 -m project.boost.build
    project-build python3 -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
Cygwin make Clang
GCC
MinGW-w64
  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/ --with-filesystem --with-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.

common.cmake

Use in a project by putting

include(path/to/common.cmake)

in CMakeLists.txt.

This file aids in quick-and-dirty development by

  • linking everything (including the runtime) statically by default,
  • setting some useful compilation options (enables warnings, defines common Windows-specific macros, strips debug symbols in release builds, etc.).

Everything is enabled by default (use the CC_* CMake options to opt out).

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-4.0.tar.gz (43.5 kB view details)

Uploaded Source

Built Distribution

cmake_common-4.0-py3-none-any.whl (33.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: cmake_common-4.0.tar.gz
  • Upload date:
  • Size: 43.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.4

File hashes

Hashes for cmake_common-4.0.tar.gz
Algorithm Hash digest
SHA256 d5d7dbd8764feb6d444e845ee63055859eb0297db7fd8ff3a0a08f39ccdb5283
MD5 1d0673e76ebaf7ee9e1d191eb55cad16
BLAKE2b-256 aafcf3f15e43208a25e3dbff83daa3d7e4dd31041367d59b8ec8e68f8b6faa64

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cmake_common-4.0-py3-none-any.whl
  • Upload date:
  • Size: 33.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.4

File hashes

Hashes for cmake_common-4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 08917307dc005b534d9562e452387b63d0e299eeb19487d49e5c530a0f85de10
MD5 f3b06cc7c728f53b1ba1a004a47f7dc0
BLAKE2b-256 7d5aa82474d352a2b4424b53074d2c48131ad12d732485a33f56515b487e74de

See more details on using hashes here.

Supported by

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