mirror of
https://github.com/microsoft/vcpkg.git
synced 2024-11-24 02:41:47 +08:00
130 lines
4.9 KiB
CMake
130 lines
4.9 KiB
CMake
vcpkg_check_linkage(ONLY_STATIC_LIBRARY) # this mirrors ImGui's portfile behavior
|
|
|
|
vcpkg_from_github(
|
|
OUT_SOURCE_PATH SOURCE_PATH
|
|
REPO pthom/hello_imgui
|
|
REF "v${VERSION}"
|
|
SHA512 cc39a7d1a6b360afb26305bcca4d4c83fce69fb7babc26e452160985c127771b24b51de7c1a85c53b93e6fa1bc87bfc7a57e6fb7216e5bf4136c449771d8bcc4
|
|
HEAD_REF master
|
|
PATCHES
|
|
fix-upw.patch
|
|
use-new-imguiimagebutton.patch # Upstream commit: https://github.com/pthom/hello_imgui/commit/3ba369ad5b9bc281f01a2b2ee78d64ecef7d632a
|
|
)
|
|
|
|
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
|
|
FEATURES
|
|
"opengl3-binding" HELLOIMGUI_HAS_OPENGL3
|
|
"metal-binding" HELLOIMGUI_HAS_METAL
|
|
"experimental-vulkan-binding" HELLOIMGUI_HAS_VULKAN
|
|
"experimental-dx11-binding" HELLOIMGUI_HAS_DIRECTX11
|
|
"experimental-dx12-binding" HELLOIMGUI_HAS_DIRECTX12
|
|
"glfw-binding" HELLOIMGUI_USE_GLFW3
|
|
"sdl2-binding" HELLOIMGUI_USE_SDL2
|
|
"freetype-lunasvg" HELLOIMGUI_USE_FREETYPE # When hello_imgui is built with freetype, it will also build with lunasvg
|
|
)
|
|
|
|
if (NOT HELLOIMGUI_HAS_OPENGL3
|
|
AND NOT HELLOIMGUI_HAS_METAL
|
|
AND NOT HELLOIMGUI_HAS_VULKAN
|
|
AND NOT HELLOIMGUI_HAS_DIRECTX11
|
|
AND NOT HELLOIMGUI_HAS_DIRECTX12)
|
|
set(no_rendering_backend ON)
|
|
endif()
|
|
|
|
if (NOT HELLOIMGUI_USE_GLFW3 AND NOT HELLOIMGUI_USE_SDL2)
|
|
set(no_platform_backend ON)
|
|
endif()
|
|
|
|
|
|
set(platform_options "")
|
|
if(VCPKG_TARGET_IS_WINDOWS)
|
|
# Standard win32 options (these are the defaults for HelloImGui)
|
|
# we could add a vcpkg feature for this, but it would have to be platform specific
|
|
list(APPEND platform_options
|
|
-DHELLOIMGUI_WIN32_NO_CONSOLE=ON
|
|
-DHELLOIMGUI_WIN32_AUTO_WINMAIN=ON
|
|
)
|
|
endif()
|
|
|
|
if(VCPKG_TARGET_IS_OSX OR VCPKG_TARGET_IS_IOS)
|
|
# Standard macOS options (these are the defaults for HelloImGui)
|
|
# we could add a vcpkg feature for this, but it would have to be platform specific
|
|
list(APPEND platform_options
|
|
-DHELLOIMGUI_MACOS_NO_BUNDLE=OFF
|
|
)
|
|
endif()
|
|
|
|
|
|
vcpkg_cmake_configure(
|
|
SOURCE_PATH "${SOURCE_PATH}"
|
|
OPTIONS
|
|
-DHELLOIMGUI_BUILD_DEMOS=OFF
|
|
-DHELLOIMGUI_BUILD_DOCS=OFF
|
|
-DHELLOIMGUI_BUILD_TESTS=OFF
|
|
|
|
# vcpkg does not support ImGui Test Engine, so we cannot enable it
|
|
-DHELLOIMGUI_WITH_TEST_ENGINE=OFF
|
|
|
|
-DHELLOIMGUI_USE_IMGUI_CMAKE_PACKAGE=ON
|
|
-DHELLO_IMGUI_IMGUI_SHARED=OFF
|
|
-DHELLOIMGUI_BUILD_IMGUI=OFF
|
|
|
|
${platform_options}
|
|
|
|
# Rendering backends
|
|
-DHELLOIMGUI_HAS_OPENGL3=${HELLOIMGUI_HAS_OPENGL3}
|
|
-DHELLOIMGUI_HAS_METAL=${HELLOIMGUI_HAS_METAL}
|
|
-DHELLOIMGUI_HAS_VULKAN=${HELLOIMGUI_HAS_VULKAN}
|
|
-DHELLOIMGUI_HAS_DIRECTX11=${HELLOIMGUI_HAS_DIRECTX11}
|
|
-DHELLOIMGUI_HAS_DIRECTX12=${HELLOIMGUI_HAS_DIRECTX12}
|
|
|
|
# Platform backends
|
|
-DHELLOIMGUI_USE_GLFW3=${HELLOIMGUI_USE_GLFW3}
|
|
-DHELLOIMGUI_USE_SDL2=${HELLOIMGUI_USE_SDL2}
|
|
)
|
|
|
|
vcpkg_cmake_install()
|
|
|
|
vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/hello_imgui PACKAGE_NAME "hello-imgui") # should be active once himgui produces a config
|
|
|
|
file(REMOVE_RECURSE
|
|
"${CURRENT_PACKAGES_DIR}/debug/include"
|
|
"${CURRENT_PACKAGES_DIR}/debug/share"
|
|
"${CURRENT_PACKAGES_DIR}/share/hello-imgui/hello_imgui_cmake/ios-cmake"
|
|
)
|
|
|
|
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")
|
|
file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
|
|
|
|
if (no_rendering_backend OR no_platform_backend)
|
|
message(STATUS "
|
|
########################################################################
|
|
!!!! WARNING !!!!!
|
|
!!!! Installed hello-imgui without a viable backend !!!!!
|
|
########################################################################
|
|
|
|
When installing hello-imgui, you should specify:
|
|
|
|
- At least one (or more) rendering backend (OpenGL3, Metal, Vulkan, DirectX11, DirectX12)
|
|
Make your choice according to your needs and your target platforms, between:
|
|
opengl3-binding # This is the recommended choice, especially for beginners
|
|
metal-binding # Apple only, advanced users only
|
|
experimental-vulkan-binding # Advanced users only
|
|
experimental-dx11-binding # Windows only, still experimental
|
|
experimental-dx12-binding # Windows only, advanced users only, still experimental
|
|
|
|
- At least one (or more) platform backend (SDL2, Glfw3):
|
|
Make your choice according to your needs and your target platforms, between:
|
|
glfw-binding
|
|
sdl-binding
|
|
|
|
For example, you could use:
|
|
vcpkg install \"hello-imgui[opengl3-binding,glfw-binding]\"
|
|
|
|
########################################################################
|
|
!!!! WARNING !!!!!
|
|
!!!! Installed hello-imgui without a viable backend !!!!!
|
|
########################################################################
|
|
")
|
|
endif()
|