Utilities to help develop C++/CMake projects
Project description
cmake-common
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 |
- Both GNU make and MinGW mingw32-make.
- 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
- project-clang-format.py —
clang-format
all C/C++ files in the project. - ctest-driver.py — wrap an executable for testing with CTest;
cross-platform
grep
.
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | d5d7dbd8764feb6d444e845ee63055859eb0297db7fd8ff3a0a08f39ccdb5283 |
|
MD5 | 1d0673e76ebaf7ee9e1d191eb55cad16 |
|
BLAKE2b-256 | aafcf3f15e43208a25e3dbff83daa3d7e4dd31041367d59b8ec8e68f8b6faa64 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 08917307dc005b534d9562e452387b63d0e299eeb19487d49e5c530a0f85de10 |
|
MD5 | f3b06cc7c728f53b1ba1a004a47f7dc0 |
|
BLAKE2b-256 | 7d5aa82474d352a2b4424b53074d2c48131ad12d732485a33f56515b487e74de |