Header-only C++17 library for Semantic Versioning 2.0.0. It provides version parsing and validation, comparison, formatting, increments, and a documented range syntax for common version constraints. No dependencies.
#include <cassert>
#include <semver.hpp>
int main() {
const auto version = semver::from_string("1.2.3");
assert(version.major() == 1);
const auto range = semver::try_parse_range("^1.2");
if (!range)
return 1;
assert(range->contains(version));
}
version<> uses std::uint32_t.*/x/X wildcard, partial, comparator, tilde, caret, whitespace-AND, and || range syntax.from_chars/to_chars, streams, std::hash, and optional std::format support.See the API reference and limitations.
Copy semver.hpp, or use a package manager:
vcpkg: neargye-semver
Conan: neargye-semver/x.y.z
CPM: CPMAddPackage(GITHUB_REPOSITORY Neargye/semver GIT_TAG x.y.z)
CMake package:
find_package(semver CONFIG REQUIRED)
target_link_libraries(your_target PRIVATE semver::semver)
More examples are available in example/.
semver requires C++17 or newer and supports:
C++
96.9%
CMake
3.1%
Header-only C++17 library for Semantic Versioning 2.0.0. It provides version parsing and validation, comparison, formatting, increments, and a documented range syntax for common version constraints. No dependencies.
#include <cassert>
#include <semver.hpp>
int main() {
const auto version = semver::from_string("1.2.3");
assert(version.major() == 1);
const auto range = semver::try_parse_range("^1.2");
if (!range)
return 1;
assert(range->contains(version));
}
version<> uses std::uint32_t.*/x/X wildcard, partial, comparator, tilde, caret, whitespace-AND, and || range syntax.from_chars/to_chars, streams, std::hash, and optional std::format support.See the API reference and limitations.
Copy semver.hpp, or use a package manager:
vcpkg: neargye-semver
Conan: neargye-semver/x.y.z
CPM: CPMAddPackage(GITHUB_REPOSITORY Neargye/semver GIT_TAG x.y.z)
CMake package:
find_package(semver CONFIG REQUIRED)
target_link_libraries(your_target PRIVATE semver::semver)
More examples are available in example/.
semver requires C++17 or newer and supports:
C++
96.9%
CMake
3.1%