{"id":21974413,"url":"https://github.com/abdes/cryptopp-cmake","last_synced_at":"2026-02-17T08:03:33.375Z","repository":{"id":58884709,"uuid":"527997816","full_name":"abdes/cryptopp-cmake","owner":"abdes","description":"A modern CMake build project for Crypto++ (https://github.com/weidai11/cryptopp).","archived":false,"fork":false,"pushed_at":"2025-08-22T08:33:37.000Z","size":348,"stargazers_count":147,"open_issues_count":18,"forks_count":56,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-10-22T12:02:52.544Z","etag":null,"topics":["build","cmake","cryptopp","modern","package"],"latest_commit_sha":null,"homepage":"","language":"CMake","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/abdes.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-08-23T13:13:53.000Z","updated_at":"2025-09-12T05:17:56.000Z","dependencies_parsed_at":"2023-12-18T19:14:36.749Z","dependency_job_id":"5469cd98-cc8f-49c3-b92d-2809caaf43e4","html_url":"https://github.com/abdes/cryptopp-cmake","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/abdes/cryptopp-cmake","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abdes%2Fcryptopp-cmake","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abdes%2Fcryptopp-cmake/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abdes%2Fcryptopp-cmake/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abdes%2Fcryptopp-cmake/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abdes","download_url":"https://codeload.github.com/abdes/cryptopp-cmake/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abdes%2Fcryptopp-cmake/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29537266,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-17T05:00:25.817Z","status":"ssl_error","status_checked_at":"2026-02-17T04:57:16.126Z","response_time":100,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["build","cmake","cryptopp","modern","package"],"created_at":"2024-11-29T15:45:14.038Z","updated_at":"2026-02-17T08:03:33.344Z","avatar_url":"https://github.com/abdes.png","language":"CMake","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Crypto++ CMake\n\n\u003cdiv align=\"center\"\u003e\n\n-+- Build Status -+-\n\n[![Build status - master][build-status-master-badge]][build-matrix]\n\n-+-\n\n[![Latest release][release-badge]][latest-release]\n[![Commits][last-commit-badge]][commits]\n[![Linux][linux-badge]][latest-release]\n[![Windows][windows-badge]][latest-release]\n[![Mac OS][macos-badge]][latest-release]\n[![License][license-badge]][license]\n\n\u003c/div\u003e\n\n## Introduction\n\nThis repository contains CMake files for Wei Dai's Crypto++\n(\u003chttps://github.com/weidai11/cryptopp\u003e) for those who use the library in\n[**Modern CMake**](https://cliutils.gitlab.io/modern-cmake/) projects.\n\nSee this\n[announcement](https://groups.google.com/g/cryptopp-users/c/9oDbTm8qWps) from\ncrypto++ maintainers.\n\nThe emphasis on _Modern_ here is very important. In 2022, we have some really\ngood solutions to many of the build problems developers used to waste a lot of\ntime on. CMake in particular has made so much progress to become one of the most\nwidely used build systems for C++. But, we're not talking about CMake 2.x here.\nWe're talking about CMake 3.11+ and maybe even CMake 3.24+.\n\nFor more details on this topic, see down below...\n\n## Table of Contents\n\n- [Crypto++ CMake](#crypto-cmake)\n  - [Introduction](#introduction)\n  - [Table of Contents](#table-of-contents)\n  - [Before you ask](#before-you-ask)\n  - [Versioning principles](#versioning-principles)\n  - [Standard usage](#standard-usage)\n  - [Using a local copy of crypto++](#using-a-local-copy-of-crypto)\n  - [Requesting the master branch of cryptopp](#requesting-the-master-branch-of-cryptopp)\n  - [Other ways](#other-ways)\n  - [Why Modern CMake?](#why-modern-cmake)\n\n## Before you ask\n\n- **Can you support an older version of CMake? You really don't need 3.21...**\n\n  No.\n\n  This is an opinionated fork with the main purpose being to stay always on a\n  recent version of CMake. We believe that the build system should be the latest\n  unlike compilers and Operating Systems. If you want to stay on old versions,\n  please take a look at the old repo.\n\n- **Can you fix the shared library build? I really like DLLs...**\n\n  Me too, but No.\n\n  Crypto++ does not properly export symbols and manage visibility. You can\n  request this feature from the crypto++ project maintainers. The old DLL build\n  was only for FIPS version, with limited symbol exports. That version is going\n  end-of-life and there is no point from supporting it here.\n\n  If you love DLLs, you can make a [_Wrapper\n  DLL_](https://cryptopp.com/wiki/Wrapper_DLL) as explained on crypto++ wiki.\n\n  The CMakeLists.txt in this project are already built for shared and static\n  builds, but the shared build is locked until crypto++ is ready for it.\n\n- **Why did you change XXX? It used to work like YYY before...**\n\n  I don't know.\n\n  I use crypto++ in my project, and I use it in a way that I learnt and\n  improved over time through experience, extensive reading of other peoples'\n  experiences, and sticking as close as possible to modern cmake practices. I'm\n  open to new ways and suggestions, especially if they come via a tracked issue,\n  a rationale and a pull request. If you have a valid use case, please document\n  it in an issue and let's find someone to help make it happen for you. It's\n  Open Source :smiley:\n\n## Versioning principles\n\nThis project releases track the [crypto++](https://github.com/weidai11/cryptopp)\nreleases. In other words, every time a new release of _crypto++_ happens, this\nproject gets updated to take into account changes in source files, compiler\noptions etc, and will see a new release with the same number than _crypto++_.\n\nAt times, bug fixes in this project will happen before a new _crypto++_ release\nis published. When a certain number of fixes have been added, and depending on\nthe criticality of the defects, an additional release tag may be made. These\n_patch tags_ will never introduce any additional changes in `crypto++` itself.\n\nMain release tags will have the format: `CRYPTOPP_M_m_p`, while _patch tags_\nwill have the format `CRYPTOPP_M_m_p_f`, where `M.m.p` represents the `crypto++`\nversion and `f` is a suffix number incremented each time a _patch tag_ is\ncreated. _Patch tags_ will keep the same `crypto++` version as the main release\ntag.\n\n\u003e As always, if you want to get the latest and greatest, always track the\n\u003e master branch.\n\n## Standard usage\n\n- Get this project using your favorite method (clone as submodule, get with\n  [FetchContent](https://cmake.org/cmake/help/latest/module/FetchContent.html),\n  get with [CPM](https://github.com/cpm-cmake/CPM.cmake)...)\n\n- In your master CMakeLists.txt, add the following:\n\n  ```cmake\n  add_subdirectory(xxxx)\n  # where xxx is the location where you put the cryptopp-cmake files\n  ```\n\n  That's pretty much it. You'll be able to link against `cryptopp` or the scoped\n  alias `cryptopp::cryptopp` and have cmake handle everything else for you.\n\nAn example is located in the\n[test/standard-cpm](https://github.com/abdes/cryptopp-cmake/tree/master/test)\ndirectory.\n\n## Using a local copy of crypto++\n\nCertain users would prefer to have a fully disconnected project, and in such\nscenario both the crypto++ source package and the cryptopp-cmake source package\nwould be pre-downloaded and then unpacked somewhere.\n\nYou would still need to add cryptopp-cmake as a subdirectory in your master\n`CMakeLists.txt`, and you can set it up in such a way to use your local copy of\ncrypto++ via the option `CRYPTOPP_SOURCES`. Just set that option in the cmake\ncommand line or in your CMakeLists.txt to point to the crypto++ source\ndirectory. The rest will be taken care of for you.\n\n## Requesting the master branch of cryptopp\n\nIf you want to test the bleeding edge of crypto++ with cmake, simply set the\noption `CRYPTOPP_USE_MASTER_BRANCH` in your CMakeLists.txt or the cmake command\nline and as usual, add the cryptopp-cmake as a subdirectory.\n\n## Other ways\n\nThere are many other ways to use this project, including by directly picking the\nfiles you need and adding them to your own project, by getting the package via\nconan, etc... Take some time to read the source code, and make suggestions if\nyou need a new usage scenario via a new issue.\n\n## Why Modern CMake?\n\nHave a look at [Installing\nCMake](https://cliutils.gitlab.io/modern-cmake/chapters/intro/installing.html)\nfrom the online 'Modern CMake' book, to see a recent snapshot of which version\nof CMake is being installed by default on Linux distributions.\n\n![Packaging Status](https://repology.org/badge/vertical-allrepos/cmake.svg?columns=3\u0026minversion=3.10.0)\n\nAnd more than that, it's so easy to install a modern version of CMake on\nLinux/MacOS/Windows, and many other OSes.\n\nLooking at the release notes of CMake versions from 3.0 till now, a minimum\nversion requirement of\n[3.21](https://cmake.org/cmake/help/latest/release/3.21.html) is a good starting\npoint. That release brings in particular presets and some nice quality of life\nfeatures that will make the maintenance and the use of this project much simpler\nand pleasant. After all, there is no justification for doing free Open Source\nwithout pleasure :smiley:\n\n[build-matrix]: https://github.com/abdes/cryptopp-cmake/actions/workflows/cmake-build.yml\n[build-status-master-badge]: https://github.com/abdes/cryptopp-cmake/actions/workflows/cmake-build.yml/badge.svg?branch=master\n[commits]: https://github.com/abdes/cryptopp-cmake/commits\n[last-commit-badge]: https://img.shields.io/github/last-commit/abdes/cryptopp-cmake\n[latest-release]: https://github.com/abdes/cryptopp-cmake/releases/latest\n[license-badge]: https://img.shields.io/github/license/abdes/cryptopp-cmake\n[license]: https://opensource.org/licenses/BSD-3-Clause\n[linux-badge]: https://img.shields.io/badge/OS-linux-blue\n[macos-badge]: https://img.shields.io/badge/OS-macOS-blue\n[release-badge]: https://img.shields.io/github/v/release/abdes/cryptopp-cmake\n[windows-badge]: https://img.shields.io/badge/OS-windows-blue\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabdes%2Fcryptopp-cmake","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabdes%2Fcryptopp-cmake","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabdes%2Fcryptopp-cmake/lists"}