Skip to main content

A template project, to enable people to build nicely structured C++ projects.

Project description

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

Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

CMakeCatchTemplate-0.2.2-cp37-cp37m-win_amd64.whl (1.6 MB view details)

Uploaded CPython 3.7m Windows x86-64

CMakeCatchTemplate-0.2.2-cp37-cp37m-win32.whl (1.2 MB view details)

Uploaded CPython 3.7m Windows x86

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 (2.8 MB view details)

Uploaded CPython 3.7m macOS 10.10+ intel macOS 10.10+ x86-64 macOS 10.6+ intel macOS 10.9+ intel macOS 10.9+ x86-64

CMakeCatchTemplate-0.2.2-cp36-cp36m-win_amd64.whl (1.7 MB view details)

Uploaded CPython 3.6m Windows x86-64

CMakeCatchTemplate-0.2.2-cp36-cp36m-win32.whl (1.2 MB view details)

Uploaded CPython 3.6m Windows x86

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 (2.8 MB view details)

Uploaded CPython 3.6m macOS 10.10+ intel macOS 10.10+ x86-64 macOS 10.6+ intel macOS 10.9+ intel macOS 10.9+ x86-64

CMakeCatchTemplate-0.2.2-cp35-cp35m-win_amd64.whl (1.7 MB view details)

Uploaded CPython 3.5m Windows x86-64

CMakeCatchTemplate-0.2.2-cp35-cp35m-win32.whl (1.2 MB view details)

Uploaded CPython 3.5m Windows x86

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 (2.8 MB view details)

Uploaded CPython 2.7m macOS 10.10+ intel macOS 10.10+ x86-64 macOS 10.6+ intel macOS 10.9+ intel macOS 10.9+ x86-64

File details

Details for the file CMakeCatchTemplate-0.2.2-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: CMakeCatchTemplate-0.2.2-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using 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

File hashes

Hashes for CMakeCatchTemplate-0.2.2-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 e919d6b1ca5667d354a52ba36c9ac44e8b5de483650866743f0940a42f4b0382
MD5 541ba8295a7d1de9ef6d59e3dd85ce48
BLAKE2b-256 09004acc5b070b1657c4042bb424362964af03b3c644927a86aa982767d2e2c2

See more details on using hashes here.

File details

Details for the file CMakeCatchTemplate-0.2.2-cp37-cp37m-win32.whl.

File metadata

  • Download URL: CMakeCatchTemplate-0.2.2-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.7m, Windows x86
  • Uploaded using 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

File hashes

Hashes for CMakeCatchTemplate-0.2.2-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 c97ef780cfffabf6be486602bfa9b3082cf8904433392e04948f4b27118274d2
MD5 0233772e1c4899c21e34ffa29757411e
BLAKE2b-256 0d468b0902834a8dcc26a839470cf1e3ef4307f9d339f2b19b8e615bc6395646

See more details on using hashes here.

File details

Details for the file CMakeCatchTemplate-0.2.2-cp37-cp37m-manylinux1_x86_64.whl.

File metadata

  • Download URL: CMakeCatchTemplate-0.2.2-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.7m
  • Uploaded using 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

File hashes

Hashes for CMakeCatchTemplate-0.2.2-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 49069ed764baca7cb226edd497a76c9a9a1c617830b1785fc8a9907624cafcc0
MD5 37bb2efb90a54585150b1cbc2348120b
BLAKE2b-256 9fb1556f46051175b2c2465916f294e061011cd972051893cbf32e45e1c25957

See more details on using hashes here.

File details

Details for the file CMakeCatchTemplate-0.2.2-cp37-cp37m-manylinux1_i686.whl.

File metadata

  • Download URL: CMakeCatchTemplate-0.2.2-cp37-cp37m-manylinux1_i686.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: CPython 3.7m
  • Uploaded using 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

File hashes

Hashes for CMakeCatchTemplate-0.2.2-cp37-cp37m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 4d08c543f5c0b88243f69c84bb562cd18d1ddcfd0f7582971f0300bfe12076aa
MD5 b2574eb3f21086eec18bff871c20c5f9
BLAKE2b-256 ccaf7c9ac2792da61149474624b4f98452225976ddcc2030c91d693eb1dfe5ca

See more details on using hashes here.

File details

Details for the file 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.

File metadata

File hashes

Hashes for 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
Algorithm Hash digest
SHA256 57a38899d3e0d68dc7a59398c371d71867d5f999d9832845ef88e7c316a3f181
MD5 d3f35445903e56f45099bb9afea38c5f
BLAKE2b-256 9efea463588a9084dde17cff154e97b3b6f80c23792ea99058ea10e652a34a78

See more details on using hashes here.

File details

Details for the file CMakeCatchTemplate-0.2.2-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: CMakeCatchTemplate-0.2.2-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 1.7 MB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using 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

File hashes

Hashes for CMakeCatchTemplate-0.2.2-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 19eba3acbbafcc318c948182c60957d1826959a7bf459a66fde79da3714887f1
MD5 bc0409d6214a1d1e3720066fae41bd93
BLAKE2b-256 89e146c16b2adb31cc52cd7adf59791ed5b7e46749e3d1b3c0f7774382f3de99

See more details on using hashes here.

File details

Details for the file CMakeCatchTemplate-0.2.2-cp36-cp36m-win32.whl.

File metadata

  • Download URL: CMakeCatchTemplate-0.2.2-cp36-cp36m-win32.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.6m, Windows x86
  • Uploaded using 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

File hashes

Hashes for CMakeCatchTemplate-0.2.2-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 a6d353961db01c70b783baa2104b2b9d827074c3b0d583e456aa6d665d0b5dee
MD5 28c854ed5093cd9f8ef3b9854e1c2cfb
BLAKE2b-256 9459184db7429fb012eb3b22538a26100daa2191282cd4a774812eaa3fa855e7

See more details on using hashes here.

File details

Details for the file CMakeCatchTemplate-0.2.2-cp36-cp36m-manylinux1_x86_64.whl.

File metadata

  • Download URL: CMakeCatchTemplate-0.2.2-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.6m
  • Uploaded using 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

File hashes

Hashes for CMakeCatchTemplate-0.2.2-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 b9b6333ea8c5da514b70bfdea9fcd8306e528ce7a57921e345ccd429497d63fd
MD5 e6e3155a69b1ccc95fcb86b18bdf850d
BLAKE2b-256 3f51bb78f60fc61b9ee3469232da63732f738ad19d97330be987e02d17ab3d80

See more details on using hashes here.

File details

Details for the file CMakeCatchTemplate-0.2.2-cp36-cp36m-manylinux1_i686.whl.

File metadata

  • Download URL: CMakeCatchTemplate-0.2.2-cp36-cp36m-manylinux1_i686.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: CPython 3.6m
  • Uploaded using 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

File hashes

Hashes for CMakeCatchTemplate-0.2.2-cp36-cp36m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 4cc30fa6b03a6444fd649acc81f7b0c19284e42e279a2e1ae34692875b0c25fb
MD5 912f895680c7295fd3ffcc7aca8294e1
BLAKE2b-256 a6fd64b61c859bc654275a36536391c5ac68c8b820cd34b85d068927fd2119c7

See more details on using hashes here.

File details

Details for the file 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.

File metadata

File hashes

Hashes for 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
Algorithm Hash digest
SHA256 4fb918ee2fdbc110d25e4ceeb6faa29eb5d277952a3239f58c604402310b7b90
MD5 0ee4cb73ddadeb31672b5af2b2e9db76
BLAKE2b-256 ad765a8b9d90323ad3eb383771475f774dae16a398c71fc73d51504edd2de65d

See more details on using hashes here.

File details

Details for the file CMakeCatchTemplate-0.2.2-cp35-cp35m-win_amd64.whl.

File metadata

  • Download URL: CMakeCatchTemplate-0.2.2-cp35-cp35m-win_amd64.whl
  • Upload date:
  • Size: 1.7 MB
  • Tags: CPython 3.5m, Windows x86-64
  • Uploaded using 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

File hashes

Hashes for CMakeCatchTemplate-0.2.2-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 35435ae7f1224eb3ff88d02ccfccb0509b84bf450d31e2a2bafb695dc00043b3
MD5 1ea2afe0123e37b37815101c61d53cbb
BLAKE2b-256 cd17c877be67c07517d040eca94df2caa94a1f8b2f7c2347a34f3fe99f88600b

See more details on using hashes here.

File details

Details for the file CMakeCatchTemplate-0.2.2-cp35-cp35m-win32.whl.

File metadata

  • Download URL: CMakeCatchTemplate-0.2.2-cp35-cp35m-win32.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.5m, Windows x86
  • Uploaded using 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

File hashes

Hashes for CMakeCatchTemplate-0.2.2-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 10caf0ca045cc2dcb18b619b626546011753cfaffb6b1e51008e4d4b505f6d59
MD5 3d4053ab940f223f859f9f327589b456
BLAKE2b-256 7fe541296970660ed1373735740ad9cd9e7ab7c1cdc75f085e7f85425e6baf39

See more details on using hashes here.

File details

Details for the file CMakeCatchTemplate-0.2.2-cp35-cp35m-manylinux1_x86_64.whl.

File metadata

  • Download URL: CMakeCatchTemplate-0.2.2-cp35-cp35m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.5m
  • Uploaded using 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

File hashes

Hashes for CMakeCatchTemplate-0.2.2-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 820bf612b4275e2843521c88966c20c13ce0bc258a2e4673d30986689508dc3b
MD5 424253705ac44c1f727d49d030e80cde
BLAKE2b-256 49265a94fc19e8728a53b551c522ffb2da01309470ce1ea386b100ee53554e5e

See more details on using hashes here.

File details

Details for the file CMakeCatchTemplate-0.2.2-cp35-cp35m-manylinux1_i686.whl.

File metadata

  • Download URL: CMakeCatchTemplate-0.2.2-cp35-cp35m-manylinux1_i686.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: CPython 3.5m
  • Uploaded using 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

File hashes

Hashes for CMakeCatchTemplate-0.2.2-cp35-cp35m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 786786bfa9b1cf3d0003af87c7bb0db93eed2c0f3fecb797339101e89b459d01
MD5 718b46190a1b97773e9693d83a4e291b
BLAKE2b-256 bfde5ea33526ed27af473fcedb46b896c05b641c612fa461d7019397fb8dc715

See more details on using hashes here.

File details

Details for the file CMakeCatchTemplate-0.2.2-cp27-cp27mu-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for CMakeCatchTemplate-0.2.2-cp27-cp27mu-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 95e3d737acc2ef22fef666a55b2cc2e61477bfb744b33eabb28f30cf54c18548
MD5 6e622781936d61542e1907bb8fc27362
BLAKE2b-256 d42462aa379826b08457bc6a8c48ede9881a13d57486d9326811a7791769dbd5

See more details on using hashes here.

File details

Details for the file CMakeCatchTemplate-0.2.2-cp27-cp27mu-manylinux1_i686.whl.

File metadata

  • Download URL: CMakeCatchTemplate-0.2.2-cp27-cp27mu-manylinux1_i686.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: CPython 2.7mu
  • Uploaded using 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

File hashes

Hashes for CMakeCatchTemplate-0.2.2-cp27-cp27mu-manylinux1_i686.whl
Algorithm Hash digest
SHA256 19aa29f406cb6cefbf51d215dcaf91ded9a0e4a28c9834a7bbb844279dae094f
MD5 e935c256a1693f55427c22c5bfc7d38e
BLAKE2b-256 31fb76ce1e76e170991428a5d67dd1f397d794c7f46519fdb84bb82ff199d28f

See more details on using hashes here.

File details

Details for the file CMakeCatchTemplate-0.2.2-cp27-cp27m-manylinux1_x86_64.whl.

File metadata

  • Download URL: CMakeCatchTemplate-0.2.2-cp27-cp27m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 2.7m
  • Uploaded using 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

File hashes

Hashes for CMakeCatchTemplate-0.2.2-cp27-cp27m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 c4f1976250e20e500b9c2813b426dd7df6a167e3bcd542246709ecc4a96029d7
MD5 e15101a46c31ea4866d522cefe0fabc5
BLAKE2b-256 50bd8998fd1fbd8cd2d4ffe833d1d6fd1ee514b43b2d89e130b904d824d29d66

See more details on using hashes here.

File details

Details for the file CMakeCatchTemplate-0.2.2-cp27-cp27m-manylinux1_i686.whl.

File metadata

  • Download URL: CMakeCatchTemplate-0.2.2-cp27-cp27m-manylinux1_i686.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: CPython 2.7m
  • Uploaded using 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

File hashes

Hashes for CMakeCatchTemplate-0.2.2-cp27-cp27m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 d4c7a77a412e36143756c36c75b68c7e6f80ab9f0513b5231577c9d2e02a0dc0
MD5 1beaf8ab84307235adcb0c81e463b925
BLAKE2b-256 273a4c76ccfd1aca56df1097c1b73e89a84c9c14d8e1998dab44f850cf433050

See more details on using hashes here.

File details

Details for the file 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.

File metadata

File hashes

Hashes for 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
Algorithm Hash digest
SHA256 a19bd343301f30cf8d5d65fb0bb8451917b93b2e49bc1c1b3024d95a4f631944
MD5 29a1a0ea0d0098c5648ff0e2d97e722f
BLAKE2b-256 37aaa2e9bec951fa7fe1ebe729074e388c74037f3bd6a5daf8129344e2da62a8

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