Skip to main content

CMakeCatchTemplate

Build Status Build Status

Purpose

This is a demo project to demonstrate a reasonable structure for CMake based projects, that use CTest to run unit tests via Catch.

Credits

This project was developed as a teaching aid for UCL's "Research Computing with C++" course developed by Dr. James Hetherington and Dr. Matt Clarkson.

Main Features

The main idea of this project is to try and help a C++ algorithm developer write their algorithm in a C++ library and then deploy the C++ library in a variety of scenarios.

The main features provided are:

  1. A Meta-Build, also known as a SuperBuild, to optionally download and build any of the following: Boost, Eigen, FLANN, OpenCV, glog, gflags, VTK, PCL and ArrayFire. All of these can be left OFF and skipped. This results in a top-level build folder containing the compiled dependencies, and then a sub-folder containing the compiled code of this project.
  2. A single library into which you can provide your main algorithms.
  3. Unit tests, using Catch, and run with CTest, so you can ensure correctness and enable regression testing of your functionality.
  4. A single command line application, to give the end user a minimalist runnable program.
  5. KWStyle config, so you can check for consistent code style, when you have KWStyle installed on your system.
  6. CppCheck config, so you can check for some performance, style and correctness issues, when you have CppCheck installed on your system.
  7. Doxygen config, so you can generate documentation via a make docs or DOCS task in Visual Studio.
  8. If your code is open-source, you can register with a Continuous Integration service, so this project provides Travis and Appveyor examples.
  9. Basic examples of how to create a Qt+VTK, Qt+OpenGL or QML+VTK user interface, ensuring the VTK render engine works in Qt or QML framework, on Windows, Linux and Mac.
  10. CPack setup to produce installers for the GUI apps.
  11. An example of the CMake required to build python interfaces to your C++ code, using boost::python.
  12. An example of the CMake required to build python interfaces to your C++ code, using pybind11, with credit to this example.
  13. An example of the CMake required to export a C-style module into Unity.
  14. Support for OpenMP, which is passed through to FLANN and OpenCV.
  15. Support for CUDA, which is passed through to FLANN, OpenCV and PCL.
  16. Support for MPI, which by default sets up the C++ libraries.
  17. If doing Boost.Python and OpenCV, an example of passing a numpy ndarray to OpenCV, computing something, and returning a cv::Mat as a numpy ndarray, thanks to Gregory Kramida's pyboostcvconverter.
  18. Support for Python Wheels, thanks to Matthew Brett's multibuild.

Use Cases

The feature list above is quite diverse, and in reality most developers won't want all of the above features. So, while you could attempt all of these, within the same project, we envisage the following project types:

  • A C++ library in C++ command line interfaces.
  • A C++ library in a C++ user interface, using Qt, or QML.
  • A C++ library in a Python module, or perhaps a Python GUI, where the Python is developed separately, outside of this project.
  • A C++ library in an environment such as Unity, developed outside of this project.

So, the aim for the C++ developer would be to write a small algorithm library, and get the code out there into the hands of their users. This project can accommodate all of the above, and there are CMake options to switch these options OFF/ON.

Furthermore, once you have a successful build for your use-case, you could delete the bits of code that you don't need. We could have made a different repository for each of the use-cases, but then there would be a lot of code duplication and overlap. So, for now, its all one repository. If you want to streamline your project, you could:

  • Take a look in the Code sub-folder. Remove the directories you do not need, and change Code/CMakeLists.txt accordingly.

  • Search the top level CMakeLists.txt for code that looks like mpAddSomething and mpIncludeSomething and easily chop out 3rd party libraries you do not need.

We believe its easier to remove code you don't need than it is to build up a lot of CMake code, based on hours of searching the internet. At least the CMake code here has been tested ... to some degree.

Basic Build Instructions

This project itself can be built if you just want to evaluate it. In Linux terms that would be:

git clone --recursive https://github.com/MattClarkson/CMakeCatchTemplate
mkdir CMakeCatchTemplate-Build
cd CMakeCatchTemplate-Build
ccmake ../CMakeCatchTemplate
make

But ideally, you should use this project as a template to create your own project. To do so, please refer to the CMakeTemplateRenamer which will show you how to clone this repository, and rename all the variables to names of your choice. Then you would simply build your new project, using cmake, as shown above.

Further Build Instructions

This project can be configured, using CMake, to build against Eigen, Boost, OpenCV, glog, gflags, VTK, PCL and ArrayFire. These were chosen as examples of how to use CMake, and some common C++ projects. These dependencies are optional, and this project will compile without them.

Furthermore, these dependencies can be downloaded and built, or the user can specify directories of previously compiled libraries.

To download and build dependencies, use CMake to ensure:

  • BUILD_SUPERBUILD:BOOL=ON

where ON is the default. Then to build any of Eigen, Boost or OpenCV etc., use CMake to set:

  • BUILD_Eigen:BOOL=ON|OFF
  • BUILD_Boost:BOOL=ON|OFF
  • BUILD_OpenCV:BOOL=ON|OFF

and so on. If you set BUILD_SUPERBUILD=OFF, and these BUILD_whatever variables are on, then CMake will just try finding locally installed versions rather then downloading them.

To switch between static/dynamic linking, use CMake to set:

  • BUILD_SHARED_LIBS:BOOL=ON|OFF

To switch between Debug and Release mode, use CMake to set:

  • CMAKE_BUILD_TYPE:STRING=Debug|Release

Note: Only Debug and Release are supported.

Note: your host system is very likely to have a version of Boost that is different to the one provided here. So if you want to use Boost, you should probably try and use the one provided by this SuperBuild.

Caveats

With all of those above build options, it is worth stressing:

  • You will still be required to write CMake code. This project is only to provide an EXAMPLE.
  • If you are building any of the dependencies, you would need to ensure the correct CMake flags are set to a reasonable default in order to compile those dependencies.
  • If you are testing on Travis or Appveyor, you need to configure your build to meet the required time limits, or else pay for more time.
  • If you are building Python Wheels, using the manylinux docker images, you may well need to provide your own docker image with dependencies pre-installed, or you setup correct CMake defaults such that the SuperBuild can compile the dependencies withing your docker image.

So, once more: This project is just to provide an example. Its a template from which you can draw your own inspiration from.

Windows Users

If you build the project with shared libraries (BUILD_SHARED_LIBS:BOOL=ON) then after the SuperBuild has successfully completed, you should look for the batch file StartVS_Debug.bat or StartVS_Release.bat in the MYPROJECT-build folder. This sets the path before launching Visual Studio, so that when you come to run your application or unit tests within Visual Studio, the dynamically loaded libraries are found at run time.

Running a Python Module

This project can be used to build Python extensions, using either Boost.Python or PyBind11.

  • Clone CMakeCatchTemplate, using --recursive.
  • Use CMake to set BUILD_Python_Boost or BUILD_Python_PyBind to ON. These are mutually exclusive.
  • Run a C++ build, as shown above.
  • Set PYTHONPATH to the directory containing your C++ Python extension.

Code examples are in Code/PythonBoost or Code/PythonPybind. So using the Code/PythonBoost as an example, once PYTHONPATH is set so that you can pick up your compiled module, you would then be able to:

import CMakeCatchTemplatePython as mp
mp.my_first_add_function(1,6)

Deploying wheels is a difficult process. To help here, we have been inspired and assisted by Matthew Brett's multibuild, so you would configure .travis.yml and appveyor.yml to generate your own Python Wheels. This project itself is deployed to PyPi but obviously only includes the above function for illustrative purposes.

Tested On

  • Windows - Windows 8, VS2013, CMake 3.6.3, Qt 5.4.2
  • Linux - Centos 7, g++ 4.8.5, CMake 3.5.1, Qt 5.6.2
  • Mac - OSX 10.10.5, clang 6.0, CMake 3.9.4, Qt 5.6.2
  • Also refer to .travis.yml and appveyor.yml for other combinations

Minimum CMake version is 3.5. If you turn GUI options on, then the minimum Qt is version 5. Qt4 is not supported and not planned to be supported. If you are using VTK you should try a Qt version >= 5.5.0 to take advantage of the new OpenGL2 backend. If you need PyBind11, you need at least C++11, so on Windows you should have at least VS2015.

A Note on Packaging and Deployment

There are many different issues and combinations to test when packaging an application. For example:

  • System: Windows / Linux / Mac.
  • Linkage: Shared libraries / Static libraries.
  • Executable style: Command line applications / GUI applications / Command line applications bundled together with GUI applications.
  • With or without python modules.
  • With or without Unity modules.
  • The developer runs make install to install it in a specific directory, linked against known libraries, in known locations.
  • The developer runs make package to make a relocatable and distributable bundle so that another user can install it anywhere on their system.

It would take too long to document all of them and all of the issues involved. So, this project suggests some simple starting points, and recommendations.

Use Case Important CMake settings Workflow
Command Line Apps leave GUIs OFF, BUILD_SHARED_LIBS=OFF, CMAKE_INSTALL_PREFIX=/path/to/install/to make, make install
C++ Gui Apps Learn to build Qt5 first, BUILD_SHARED_LIBS=ON, build against your compiled Qt make, make package
Python Modules must clone repo with --recursive, leave GUIs OFF, BUILD_SHARED_LIBS=OFF make, test locally by setting PYTHONPATH, configure CI builds (see appveyor.yml and .travis.yml) to make wheels, upload to PyPi
Unity Modules leave GUIs OFF, BUILD_SHARED_LIBS=ON make, then point Unity at the module.

If you change your use-case, you must do a full clean build. That means completely delete the build folder, not just do a make clean.

Preferred Branching Workflow for Contributions.

We welcome contributions to this project. Please use the following workflow.

  1. Raise issue in this project's Github Issue Tracker.
  2. Fork repository.
  3. Create a feature branch called <issue-number>-<some-short-description> replacing <issue-number> with the Github issue number and <some-short-description> with your description of the thing you are implementing.
  4. Code on that branch.
  5. Push to your remote when ready.
  6. Create pull request.
  7. We will review code, suggest and required changes and merge to master when it is ready.

Examples Generated With This Template

Metadata

Release files for CMakeCatchTemplate 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for CMakeCatchTemplate 0.2.2
File
CMakeCatchTemplate-0.2.2-cp37-cp37m-win_amd64.whl CPython 3.7 CPython 3.7 pymalloc Windows x86-64 Details
CMakeCatchTemplate-0.2.2-cp37-cp37m-win32.whl CPython 3.7 CPython 3.7 pymalloc Windows x86-32 Details
CMakeCatchTemplate-0.2.2-cp37-cp37m-manylinux1_x86_64.whl CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.5+ x86-64 Details
CMakeCatchTemplate-0.2.2-cp37-cp37m-manylinux1_i686.whl CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.5+ x86-32 Details
CMakeCatchTemplate-0.2.2-cp37-cp37m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl CPython 3.7 CPython 3.7 pymalloc macOS 10.10+ Intel (x86-64, i386), macOS 10.9+ x86-64, macOS 10.9+ Intel (x86-64, i386), macOS 10.10+ x86-64, macOS 10.6+ Intel (x86-64, i386) Details
CMakeCatchTemplate-0.2.2-cp36-cp36m-win_amd64.whl CPython 3.6 CPython 3.6 pymalloc Windows x86-64 Details
CMakeCatchTemplate-0.2.2-cp36-cp36m-win32.whl CPython 3.6 CPython 3.6 pymalloc Windows x86-32 Details
CMakeCatchTemplate-0.2.2-cp36-cp36m-manylinux1_x86_64.whl CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.5+ x86-64 Details
CMakeCatchTemplate-0.2.2-cp36-cp36m-manylinux1_i686.whl CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.5+ x86-32 Details
CMakeCatchTemplate-0.2.2-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl CPython 3.6 CPython 3.6 pymalloc macOS 10.9+ x86-64, macOS 10.9+ Intel (x86-64, i386), macOS 10.10+ x86-64, macOS 10.6+ Intel (x86-64, i386), macOS 10.10+ Intel (x86-64, i386) Details
CMakeCatchTemplate-0.2.2-cp35-cp35m-win_amd64.whl CPython 3.5 CPython 3.5 pymalloc Windows x86-64 Details
CMakeCatchTemplate-0.2.2-cp35-cp35m-win32.whl CPython 3.5 CPython 3.5 pymalloc Windows x86-32 Details
CMakeCatchTemplate-0.2.2-cp35-cp35m-manylinux1_x86_64.whl CPython 3.5 CPython 3.5 pymalloc Linux glibc 2.5+ x86-64 Details
CMakeCatchTemplate-0.2.2-cp35-cp35m-manylinux1_i686.whl CPython 3.5 CPython 3.5 pymalloc Linux glibc 2.5+ x86-32 Details
CMakeCatchTemplate-0.2.2-cp27-cp27mu-manylinux1_x86_64.whl CPython 2.7 CPython 2.7 pymalloc wide-unicode Linux glibc 2.5+ x86-64 Details
CMakeCatchTemplate-0.2.2-cp27-cp27mu-manylinux1_i686.whl CPython 2.7 CPython 2.7 pymalloc wide-unicode Linux glibc 2.5+ x86-32 Details
CMakeCatchTemplate-0.2.2-cp27-cp27m-manylinux1_x86_64.whl CPython 2.7 CPython 2.7 pymalloc Linux glibc 2.5+ x86-64 Details
CMakeCatchTemplate-0.2.2-cp27-cp27m-manylinux1_i686.whl CPython 2.7 CPython 2.7 pymalloc Linux glibc 2.5+ x86-32 Details
CMakeCatchTemplate-0.2.2-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl CPython 2.7 CPython 2.7 pymalloc macOS 10.9+ Intel (x86-64, i386), macOS 10.10+ x86-64, macOS 10.6+ Intel (x86-64, i386), macOS 10.10+ Intel (x86-64, i386), macOS 10.9+ x86-64 Details

Total release size: 38.9 MB

Release files / CMakeCatchTemplate-0.2.2-cp37-cp37m-win_amd64.whl

Download URL CMakeCatchTemplate-0.2.2-cp37-cp37m-win_amd64.whl
Size 1.6 MB
Tags CPython 3.7 CPython 3.7 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
e919d6b1ca5667d354a52ba36c9ac44e8b5de483650866743f0940a42f4b0382
BLAKE2b-256 checksum
How to use checksums
09004acc5b070b1657c4042bb424362964af03b3c644927a86aa982767d2e2c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.2

Release files / CMakeCatchTemplate-0.2.2-cp37-cp37m-win32.whl

Download URL CMakeCatchTemplate-0.2.2-cp37-cp37m-win32.whl
Size 1.2 MB
Tags CPython 3.7 CPython 3.7 pymalloc Windows x86-32
SHA-256 checksum
How to use checksums
c97ef780cfffabf6be486602bfa9b3082cf8904433392e04948f4b27118274d2
BLAKE2b-256 checksum
How to use checksums
0d468b0902834a8dcc26a839470cf1e3ef4307f9d339f2b19b8e615bc6395646
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.2

Release files / CMakeCatchTemplate-0.2.2-cp37-cp37m-manylinux1_x86_64.whl

Download URL CMakeCatchTemplate-0.2.2-cp37-cp37m-manylinux1_x86_64.whl
Size 2.4 MB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
49069ed764baca7cb226edd497a76c9a9a1c617830b1785fc8a9907624cafcc0
BLAKE2b-256 checksum
How to use checksums
9fb1556f46051175b2c2465916f294e061011cd972051893cbf32e45e1c25957
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.3

Release files / CMakeCatchTemplate-0.2.2-cp37-cp37m-manylinux1_i686.whl

Download URL CMakeCatchTemplate-0.2.2-cp37-cp37m-manylinux1_i686.whl
Size 1.9 MB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.5+ x86-32
SHA-256 checksum
How to use checksums
4d08c543f5c0b88243f69c84bb562cd18d1ddcfd0f7582971f0300bfe12076aa
BLAKE2b-256 checksum
How to use checksums
ccaf7c9ac2792da61149474624b4f98452225976ddcc2030c91d693eb1dfe5ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.3

Release files / CMakeCatchTemplate-0.2.2-cp37-cp37m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl

Download URL CMakeCatchTemplate-0.2.2-cp37-cp37m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
Size 2.8 MB
Tags CPython 3.7 CPython 3.7 pymalloc macOS 10.10+ Intel (x86-64, i386) macOS 10.10+ x86-64 macOS 10.6+ Intel (x86-64, i386) macOS 10.9+ Intel (x86-64, i386) macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
57a38899d3e0d68dc7a59398c371d71867d5f999d9832845ef88e7c316a3f181
BLAKE2b-256 checksum
How to use checksums
9efea463588a9084dde17cff154e97b3b6f80c23792ea99058ea10e652a34a78
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.1

Release files / CMakeCatchTemplate-0.2.2-cp36-cp36m-win_amd64.whl

Download URL CMakeCatchTemplate-0.2.2-cp36-cp36m-win_amd64.whl
Size 1.7 MB
Tags CPython 3.6 CPython 3.6 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
19eba3acbbafcc318c948182c60957d1826959a7bf459a66fde79da3714887f1
BLAKE2b-256 checksum
How to use checksums
89e146c16b2adb31cc52cd7adf59791ed5b7e46749e3d1b3c0f7774382f3de99
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.8

Release files / CMakeCatchTemplate-0.2.2-cp36-cp36m-win32.whl

Download URL CMakeCatchTemplate-0.2.2-cp36-cp36m-win32.whl
Size 1.2 MB
Tags CPython 3.6 CPython 3.6 pymalloc Windows x86-32
SHA-256 checksum
How to use checksums
a6d353961db01c70b783baa2104b2b9d827074c3b0d583e456aa6d665d0b5dee
BLAKE2b-256 checksum
How to use checksums
9459184db7429fb012eb3b22538a26100daa2191282cd4a774812eaa3fa855e7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.8

Release files / CMakeCatchTemplate-0.2.2-cp36-cp36m-manylinux1_x86_64.whl

Download URL CMakeCatchTemplate-0.2.2-cp36-cp36m-manylinux1_x86_64.whl
Size 2.4 MB
Tags CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
b9b6333ea8c5da514b70bfdea9fcd8306e528ce7a57921e345ccd429497d63fd
BLAKE2b-256 checksum
How to use checksums
3f51bb78f60fc61b9ee3469232da63732f738ad19d97330be987e02d17ab3d80
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.3

Release files / CMakeCatchTemplate-0.2.2-cp36-cp36m-manylinux1_i686.whl

Download URL CMakeCatchTemplate-0.2.2-cp36-cp36m-manylinux1_i686.whl
Size 1.9 MB
Tags CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.5+ x86-32
SHA-256 checksum
How to use checksums
4cc30fa6b03a6444fd649acc81f7b0c19284e42e279a2e1ae34692875b0c25fb
BLAKE2b-256 checksum
How to use checksums
a6fd64b61c859bc654275a36536391c5ac68c8b820cd34b85d068927fd2119c7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.3

Release files / CMakeCatchTemplate-0.2.2-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl

Download URL CMakeCatchTemplate-0.2.2-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
Size 2.8 MB
Tags CPython 3.6 CPython 3.6 pymalloc macOS 10.10+ Intel (x86-64, i386) macOS 10.10+ x86-64 macOS 10.6+ Intel (x86-64, i386) macOS 10.9+ Intel (x86-64, i386) macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
4fb918ee2fdbc110d25e4ceeb6faa29eb5d277952a3239f58c604402310b7b90
BLAKE2b-256 checksum
How to use checksums
ad765a8b9d90323ad3eb383771475f774dae16a398c71fc73d51504edd2de65d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.7

Release files / CMakeCatchTemplate-0.2.2-cp35-cp35m-win_amd64.whl

Download URL CMakeCatchTemplate-0.2.2-cp35-cp35m-win_amd64.whl
Size 1.7 MB
Tags CPython 3.5 CPython 3.5 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
35435ae7f1224eb3ff88d02ccfccb0509b84bf450d31e2a2bafb695dc00043b3
BLAKE2b-256 checksum
How to use checksums
cd17c877be67c07517d040eca94df2caa94a1f8b2f7c2347a34f3fe99f88600b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.5.4

Release files / CMakeCatchTemplate-0.2.2-cp35-cp35m-win32.whl

Download URL CMakeCatchTemplate-0.2.2-cp35-cp35m-win32.whl
Size 1.2 MB
Tags CPython 3.5 CPython 3.5 pymalloc Windows x86-32
SHA-256 checksum
How to use checksums
10caf0ca045cc2dcb18b619b626546011753cfaffb6b1e51008e4d4b505f6d59
BLAKE2b-256 checksum
How to use checksums
7fe541296970660ed1373735740ad9cd9e7ab7c1cdc75f085e7f85425e6baf39
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.5.4

Release files / CMakeCatchTemplate-0.2.2-cp35-cp35m-manylinux1_x86_64.whl

Download URL CMakeCatchTemplate-0.2.2-cp35-cp35m-manylinux1_x86_64.whl
Size 2.4 MB
Tags CPython 3.5 CPython 3.5 pymalloc Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
820bf612b4275e2843521c88966c20c13ce0bc258a2e4673d30986689508dc3b
BLAKE2b-256 checksum
How to use checksums
49265a94fc19e8728a53b551c522ffb2da01309470ce1ea386b100ee53554e5e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.3

Release files / CMakeCatchTemplate-0.2.2-cp35-cp35m-manylinux1_i686.whl

Download URL CMakeCatchTemplate-0.2.2-cp35-cp35m-manylinux1_i686.whl
Size 1.9 MB
Tags CPython 3.5 CPython 3.5 pymalloc Linux glibc 2.5+ x86-32
SHA-256 checksum
How to use checksums
786786bfa9b1cf3d0003af87c7bb0db93eed2c0f3fecb797339101e89b459d01
BLAKE2b-256 checksum
How to use checksums
bfde5ea33526ed27af473fcedb46b896c05b641c612fa461d7019397fb8dc715
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.3

Release files / CMakeCatchTemplate-0.2.2-cp27-cp27mu-manylinux1_x86_64.whl

Download URL CMakeCatchTemplate-0.2.2-cp27-cp27mu-manylinux1_x86_64.whl
Size 2.4 MB
Tags CPython 2.7 CPython 2.7 pymalloc wide-unicode Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
95e3d737acc2ef22fef666a55b2cc2e61477bfb744b33eabb28f30cf54c18548
BLAKE2b-256 checksum
How to use checksums
d42462aa379826b08457bc6a8c48ede9881a13d57486d9326811a7791769dbd5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.3

Release files / CMakeCatchTemplate-0.2.2-cp27-cp27mu-manylinux1_i686.whl

Download URL CMakeCatchTemplate-0.2.2-cp27-cp27mu-manylinux1_i686.whl
Size 1.9 MB
Tags CPython 2.7 CPython 2.7 pymalloc wide-unicode Linux glibc 2.5+ x86-32
SHA-256 checksum
How to use checksums
19aa29f406cb6cefbf51d215dcaf91ded9a0e4a28c9834a7bbb844279dae094f
BLAKE2b-256 checksum
How to use checksums
31fb76ce1e76e170991428a5d67dd1f397d794c7f46519fdb84bb82ff199d28f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.3

Release files / CMakeCatchTemplate-0.2.2-cp27-cp27m-manylinux1_x86_64.whl

Download URL CMakeCatchTemplate-0.2.2-cp27-cp27m-manylinux1_x86_64.whl
Size 2.4 MB
Tags CPython 2.7 CPython 2.7 pymalloc Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
c4f1976250e20e500b9c2813b426dd7df6a167e3bcd542246709ecc4a96029d7
BLAKE2b-256 checksum
How to use checksums
50bd8998fd1fbd8cd2d4ffe833d1d6fd1ee514b43b2d89e130b904d824d29d66
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.3

Release files / CMakeCatchTemplate-0.2.2-cp27-cp27m-manylinux1_i686.whl

Download URL CMakeCatchTemplate-0.2.2-cp27-cp27m-manylinux1_i686.whl
Size 1.9 MB
Tags CPython 2.7 CPython 2.7 pymalloc Linux glibc 2.5+ x86-32
SHA-256 checksum
How to use checksums
d4c7a77a412e36143756c36c75b68c7e6f80ab9f0513b5231577c9d2e02a0dc0
BLAKE2b-256 checksum
How to use checksums
273a4c76ccfd1aca56df1097c1b73e89a84c9c14d8e1998dab44f850cf433050
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.3

Release files / CMakeCatchTemplate-0.2.2-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl

Download URL CMakeCatchTemplate-0.2.2-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
Size 2.8 MB
Tags CPython 2.7 CPython 2.7 pymalloc macOS 10.10+ Intel (x86-64, i386) macOS 10.10+ x86-64 macOS 10.6+ Intel (x86-64, i386) macOS 10.9+ Intel (x86-64, i386) macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
a19bd343301f30cf8d5d65fb0bb8451917b93b2e49bc1c1b3024d95a4f631944
BLAKE2b-256 checksum
How to use checksums
37aaa2e9bec951fa7fe1ebe729074e388c74037f3bd6a5daf8129344e2da62a8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/2.7.15

Release history Release notifications | RSS feed

This release

0.2.2 This release

19 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page