Skip to content

Latest commit

 

History

History
83 lines (61 loc) · 2.44 KB

README.md

File metadata and controls

83 lines (61 loc) · 2.44 KB

Github releases Vcpkg package Conan package License

C++ library compare and manipulate versions are available as extensions to the <major>.<minor>.<patch>-<prerelease_tag>+<build_metadata> format complying with Semantic Versioning 2.0.0

  • Parse

    semver::version v1;
    if (semver::parse("1.4.3", v1)) {
      const int patch = v1.patch(); // 3
      // do something...
    }
    
    semver::version v2;
    if (semver::parse("1.2.4-alpha.10")) {
      const std::string prerelease_tag = v2.prerelease_tag() // alpha.10
      // do something...
    }
  • Сomparison

    assert(v1 != v2);
    assert(v1 > v2);
    assert(v1 >= v2);
    assert(v2 < v1);
    assert(v2 <= v1);
  • Validate

    const bool result = semver::valid("1.2.3-alpha+build");
    assert(result);
  • Range matching

    semver::range_set range;
    if (semver::parse(">=1.0.0 <2.0.0 || >3.2.1", range)) {
      semver::version version;
      if (semver::parse("1.2.3", version)) {
        assert(range.contains(version));
      }
    }

Check the examples folder to see more various usage examples

Integration

You should add required file semver.hpp.

If you are using vcpkg on your project for external dependencies, then you can use the neargye-semver.

If you are using Conan to manage your dependencies, merely add neargye-semver/x.y.z to your conan's requires, where x.y.z is the release version you want to use.

Alternatively, you can use something like CPM which is based on CMake's Fetch_Content module.

CPMAddPackage(
    NAME semver
    GITHUB_REPOSITORY Neargye/semver
    GIT_TAG x.y.z # Where `x.y.z` is the release version you want to use.
)

Compiler compatibility

  • Clang/LLVM >= 5
  • MSVC++ >= 14.11 / Visual Studio >= 2017
  • Xcode >= 10
  • GCC >= 7

Licensed under the MIT License