Find libepoxy without pkg-config (MSVC + vcpkg); Windows build notes

This commit is contained in:
Gabrieal Jimmy
2026-10-02 15:43:53 -05:00
parent 83a1f16806
commit 5ec1ca43e9
2 changed files with 23 additions and 2 deletions

View File

@@ -23,9 +23,24 @@ include(FetchContent)
# --- Dependencies -----------------------------------------------------------
# System packages are preferred; anything missing is fetched.
find_package(OpenGL REQUIRED)
find_package(PkgConfig REQUIRED)
# libepoxy: pkg-config where available (Linux, MSYS2), else a plain header/library search
# (MSVC + vcpkg ships no pkg-config by default).
if(NOT TARGET PkgConfig::EPOXY)
pkg_check_modules(EPOXY REQUIRED IMPORTED_TARGET epoxy)
find_package(PkgConfig QUIET)
if(PkgConfig_FOUND)
pkg_check_modules(EPOXY QUIET IMPORTED_TARGET epoxy)
endif()
if(NOT TARGET PkgConfig::EPOXY)
find_path(EPOXY_INCLUDE_DIR epoxy/gl.h)
find_library(EPOXY_LIBRARY NAMES epoxy libepoxy epoxy-0)
if(NOT EPOXY_INCLUDE_DIR OR NOT EPOXY_LIBRARY)
message(FATAL_ERROR "libepoxy not found (install it, e.g. pacman -S libepoxy, "
"pacman -S mingw-w64-ucrt-x86_64-libepoxy or vcpkg install libepoxy)")
endif()
add_library(PkgConfig::EPOXY UNKNOWN IMPORTED)
set_target_properties(PkgConfig::EPOXY PROPERTIES IMPORTED_LOCATION "${EPOXY_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${EPOXY_INCLUDE_DIR}")
endif()
endif()
if(NOT TARGET glfw)

View File

@@ -56,6 +56,12 @@ ninja -C build
./build/hd2d_demo
```
Windows: in the MSYS2 **UCRT64** shell,
`pacman -S --needed mingw-w64-ucrt-x86_64-{gcc,cmake,ninja,pkgconf,glfw,glm,libepoxy}` and the
same `cmake` / `ninja` commands. With Visual Studio, `vcpkg install glfw3 glm libepoxy` and pass
`-DCMAKE_TOOLCHAIN_FILE=<vcpkg>/scripts/buildsystems/vcpkg.cmake`. libepoxy is found through
pkg-config when present, else by a plain header/library search.
The asset path is baked in at configure time (`HD2D_ASSET_DIR`), so the demo can
be run from any working directory.