Skip to content

A sample project template that uses fmt via vcpkg featuring a fully integrated CI/CD pipeline to build, test and release the project

License

Notifications You must be signed in to change notification settings

paulbuechner/vcpkg-fmt-template

Repository files navigation

vcpkg fmt Template

A sample project template that uses fmt via vcpkg featuring a fully integrated CI/CD pipeline to build, test and release the project.

Project Template Features

This project template includes the following features:

  • Package Manager: Utilizes vcpkg to manage dependencies.
  • Multiplatform Support: Supports Windows, Linux, and macOS with CMake using CMakePresets.json for cross-platform build configurations.
  • CI/CD Integration: Offers a fully integrated CI/CD pipeline with GitHub Actions, which includes:
    • Quality Workflow: Builds and tests the project on all supported platforms.
    • Release Workflow: Handles building, testing, packaging, and releasing the project. Integrates with changesets for versioning and changelog management. Automatically uploads packages for supported platforms to GitHub Releases.
    • Binary Caching: Integrates vcpkg's binary caching with the run-vcpkg action to speed up builds and reduce CI costs.

Getting Started

To get started, simply clone this repository and run the following commands to set up the project:

Fist make sure to download vcpkg, which is managed as a submodule in this project:

git submodule update --init --recursive

Optionally, install node packages to get access to the changeset CLI:

npm install

Now you can run the following commands to configure and build the project:

# Configure the project
cmake --preset vcpkg-fmt-template-ninja-multiconfiguration-vcpkg

# Build the project
cmake --build --preset vcpkg-fmt-template-ninja-multiconfiguration-vcpkg

About

A sample project template that uses fmt via vcpkg featuring a fully integrated CI/CD pipeline to build, test and release the project

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published