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
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
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.