Skip to content

Add vcpkg integration #77

@jsrivaya

Description

@jsrivaya

Summary

Add vcpkg support so users in the vcpkg ecosystem (Windows/MSVC, game studios, Microsoft-adjacent teams) can consume loon without switching package managers.

Two-phase approach

Phase 1 — Overlay port in-repo (do this now)

Ship a vcpkg overlay port inside the loon repo. No registry PR process, no ongoing per-release maintenance burden, available immediately.

loon/
  vcpkg/
    ports/loon/
      portfile.cmake
      vcpkg.json

portfile.cmake (trivial for header-only):

vcpkg_from_github(
    OUT_SOURCE_PATH SOURCE_PATH
    REPO jsrivaya/loon
    REF "v${VERSION}"
    SHA512 <hash>
    HEAD_REF main
)

set(VCPKG_BUILD_TYPE release)
vcpkg_cmake_install()
vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/loon)
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug")
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")

vcpkg.json:

{
  "name": "loon",
  "version": "0.2.0",
  "description": "High-performance header-only C++ data structures",
  "homepage": "https://github.com/jsrivaya/loon",
  "license": "MIT",
  "dependencies": []
}

Users consume it with:

vcpkg install loon --overlay-ports=path/to/loon/vcpkg/ports

Document this in the README Installation section alongside the existing Conan instructions.

Phase 2 — Official vcpkg registry submission (defer until ~100-200 stars)

Submit a PR to microsoft/vcpkg to add loon to the public registry. This gives passive discoverability but requires:

  • A PR to microsoft/vcpkg with portfile + versioning files
  • Review process (can take days to weeks)
  • A PR per release to update the version going forward

Not worth the maintenance overhead until there is meaningful adoption.

Acceptance criteria

  • vcpkg/ports/loon/portfile.cmake added to repo
  • vcpkg/ports/loon/vcpkg.json added to repo
  • README Installation section updated with vcpkg overlay instructions
  • CI verifies the overlay port installs cleanly (optional but recommended)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions