mirror of
https://github.com/ocornut/imgui.git
synced 2025-02-17 11:08:42 +01:00
Add CMake project
Export Dear ImGui as CMake's ImGui package. Options: - ImGui_USER_CONFIG; - ImGui_EXAMPLES; - ImGui_BACKENDS; - ImGui_MISC; - ImGui_3RDPARTY; - ImGui_OPENGL_LOADER; - ImGui_FREETYPE; - ImGui_TOOLS; - ImGui_PACKAGE. Export targets: - ImGui::Core; - ImGui::ImplGLUT; - ImGui::ImplSDL2; - ImGui::ImplGlfw; - ImGui::ImplOpenGL2; - ImGui::ImplOpenGL3; - ImGui::ImplVulkan; - ImGui::FreeType; - ImGui::StdLib; - ImGui::BinaryToCompressedC. Import targets from: - build directory; - installed package. Examples: - example_null; - example_emscripten_opengl3; - example_glut_opengl2 - example_sdl2_opengl2; - example_sdl2_opengl3; - example_sdl2_vulkan; - example_glfw_opengl2; - example_glfw_opengl3; - example_glfw_vulkan.
This commit is contained in:
parent
f401021d5a
commit
65e6ef1c33
92
examples/CMakeLists.txt
Normal file
92
examples/CMakeLists.txt
Normal file
@ -0,0 +1,92 @@
|
||||
cmake_minimum_required(VERSION 3.1)
|
||||
|
||||
# Fetching version from header file
|
||||
file(STRINGS ../imgui.h ImGui_VERSION_NUM_HEADER_STRING
|
||||
REGEX "#define[ \t]+IMGUI_VERSION_NUM[ \t]+([0-9]+)"
|
||||
LIMIT_COUNT 1)
|
||||
string(REGEX REPLACE "#define[ \t]+IMGUI_VERSION_NUM[ \t]+([0-9]+)" "\\1"
|
||||
IMGUI_VERSION_NUM "${ImGui_VERSION_NUM_HEADER_STRING}")
|
||||
math(EXPR IMGUI_VERSION_MAJOR "${IMGUI_VERSION_NUM} / 10000")
|
||||
math(EXPR IMGUI_VERSION_MINOR "(${IMGUI_VERSION_NUM} % 10000) / 100")
|
||||
math(EXPR IMGUI_VERSION_PATCH "${IMGUI_VERSION_NUM} % 100")
|
||||
|
||||
project(imgui_examples
|
||||
VERSION "${IMGUI_VERSION_MAJOR}.${IMGUI_VERSION_MINOR}.${IMGUI_VERSION_PATCH}"
|
||||
LANGUAGES CXX)
|
||||
|
||||
get_filename_component(ImGui_SRCDIR "${CMAKE_CURRENT_LIST_DIR}" DIRECTORY)
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/ImGuiModule.cmake")
|
||||
|
||||
set(ImGui_OPTIONS)
|
||||
|
||||
imgui_option(USER_CONFIG "Dear ImGui user config for include" "" STRING)
|
||||
imgui_option(EXAMPLES "Dear ImGui example applications" ON)
|
||||
imgui_option(BACKENDS "Dear ImGui platform and render backends" ON)
|
||||
imgui_option(MISC "Dear ImGui misc features" ON)
|
||||
imgui_option(3RDPARTY "Dear ImGui example dependencies" ON)
|
||||
if(EMSCRIPTEN)
|
||||
set(ImGui_OPENGL_LOADER_DEFAULT "GLEW")
|
||||
else()
|
||||
set(ImGui_OPENGL_LOADER_DEFAULT "GL3W")
|
||||
endif()
|
||||
imgui_option(OPENGL_LOADER
|
||||
"Dear ImGui OpenGL loader (GL3W, GLEW, GLAD or custom header)"
|
||||
"${ImGui_OPENGL_LOADER_DEFAULT}"
|
||||
STRINGS "GL3W" "GLEW" "GLAD")
|
||||
imgui_option(FREETYPE "Dear ImGui will build font atlases using FreeType instead of stb_truetype" OFF)
|
||||
imgui_option(TOOLS "Dear ImGui auxiliary applications" OFF)
|
||||
imgui_option(PACKAGE "Dear ImGui packaging" OFF)
|
||||
|
||||
file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/ImGuiOptions.cmake"
|
||||
CONTENT "${ImGui_OPTIONS_CMAKE}")
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/ImGuiTargets.cmake")
|
||||
|
||||
set(ImGui_DIR "${CMAKE_CURRENT_LIST_DIR}")
|
||||
|
||||
imgui_example(example_null
|
||||
TARGETS Core)
|
||||
|
||||
if(EMSCRIPTEN)
|
||||
imgui_example(example_emscripten_opengl3
|
||||
BACKENDS ImplSDL2 ImplOpenGL3)
|
||||
else()
|
||||
imgui_example(example_glut_opengl2
|
||||
BACKENDS ImplGLUT ImplOpenGL2)
|
||||
|
||||
imgui_example(example_sdl2_opengl2
|
||||
BACKENDS ImplSDL2 ImplOpenGL2)
|
||||
|
||||
imgui_example(example_sdl2_opengl3
|
||||
BACKENDS ImplSDL2 ImplOpenGL3)
|
||||
|
||||
imgui_example(example_sdl2_vulkan
|
||||
BACKENDS ImplSDL2 ImplVulkan)
|
||||
|
||||
imgui_example(example_glfw_opengl2
|
||||
BACKENDS ImplGlfw ImplOpenGL2)
|
||||
|
||||
imgui_example(example_glfw_opengl3
|
||||
BACKENDS ImplGlfw ImplOpenGL3)
|
||||
|
||||
imgui_example(example_glfw_vulkan
|
||||
BACKENDS ImplGlfw ImplVulkan)
|
||||
endif()
|
||||
|
||||
if(NOT "${CMAKE_CURRENT_LIST_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}")
|
||||
foreach(FILE ImGuiConfig.cmake ImGuiModule.cmake ImGuiTargets.cmake)
|
||||
configure_file(${FILE} ${FILE} COPYONLY)
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
install(FILES ImGuiConfig.cmake ImGuiModule.cmake ImGuiTargets.cmake
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/ImGuiOptions.cmake"
|
||||
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/imgui)
|
||||
|
||||
if(ImGui_PACKAGE)
|
||||
if(NOT DEFINED CPACK_PACKAGE_NAME)
|
||||
set(CPACK_PACKAGE_NAME "dear-imgui")
|
||||
endif()
|
||||
include(CPack)
|
||||
endif()
|
21
examples/ImGuiConfig.cmake
Normal file
21
examples/ImGuiConfig.cmake
Normal file
@ -0,0 +1,21 @@
|
||||
if(NOT DEFINED ImGui_FIND_COMPONENTS)
|
||||
set(ImGui_FIND_COMPONENTS Core)
|
||||
endif()
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/ImGuiTargets.cmake")
|
||||
|
||||
foreach(COMPONENT ${ImGui_FIND_COMPONENTS})
|
||||
if(NOT ";${ImGui_AVAILABLE_COMPONENTS};" MATCHES ";${COMPONENT};")
|
||||
set(ImGui_FOUND FALSE)
|
||||
set(ImGui_NOT_FOUND_MESSAGE "Unavailable component: ${COMPONENT}.")
|
||||
endif()
|
||||
if(NOT ";${ImGui_SUPPORTED_COMPONENTS};" MATCHES ";${COMPONENT};")
|
||||
set(ImGui_FOUND FALSE)
|
||||
set(ImGui_NOT_FOUND_MESSAGE "Unsupported component: ${COMPONENT}.")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if(NOT ImGui_FOUND)
|
||||
set(ImGui_NOT_FOUND_MESSAGE "${ImGui_NOT_FOUND_MESSAGE}\nSupported components: ${ImGui_SUPPORTED_COMPONENTS}.")
|
||||
set(ImGui_NOT_FOUND_MESSAGE "${ImGui_NOT_FOUND_MESSAGE}\nAvailable components: ${ImGui_AVAILABLE_COMPONENTS}.")
|
||||
endif()
|
325
examples/ImGuiModule.cmake
Normal file
325
examples/ImGuiModule.cmake
Normal file
@ -0,0 +1,325 @@
|
||||
if(NOT DEFINED ImGuiModule_CMAKE_INCLUDED)
|
||||
set(ImGuiModule_CMAKE_INCLUDED 1)
|
||||
else()
|
||||
return()
|
||||
endif()
|
||||
|
||||
if(CMAKE_VERSION VERSION_LESS 3.5)
|
||||
include(CMakeParseArguments)
|
||||
endif()
|
||||
|
||||
if(EXISTS "${ImGui_SRCDIR}" AND EXISTS "${ImGui_SRCDIR}/imgui.cpp")
|
||||
set(ImGui TRUE)
|
||||
else()
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/ImGuiOptions.cmake)
|
||||
endif()
|
||||
|
||||
function(imgui_option OPTION DESCRIPTION DEFAULT)
|
||||
if(ImGui)
|
||||
cmake_parse_arguments(OPTION "STRING" "" "STRINGS" ${ARGN})
|
||||
if(DEFINED OPTION_STRING)
|
||||
set(ImGui_${OPTION} ${DEFAULT} CACHE STRING "${DESCRIPTION}")
|
||||
elseif(DEFINED OPTION_STRINGS)
|
||||
set(ImGui_${OPTION} ${DEFAULT} CACHE STRING "${DESCRIPTION}")
|
||||
set_property(CACHE ImGui_${OPTION}
|
||||
PROPERTY STRINGS "${OPTION_STRINGS}")
|
||||
else()
|
||||
option(ImGui_${OPTION} "${DESCRIPTION}" ${DEFAULT})
|
||||
endif()
|
||||
set(ImGui_${OPTION}_DESCRIPTION "${DESCRIPTION}")
|
||||
set(ImGui_${OPTION}_DEFAULT ${DEFAULT})
|
||||
list(APPEND ImGui_OPTIONS ${OPTION})
|
||||
set(ImGui_OPTIONS "${ImGui_OPTIONS}" PARENT_SCOPE)
|
||||
set(ImGui_${OPTION}_DESCRIPTION "${DESCRIPTION}" PARENT_SCOPE)
|
||||
set(ImGui_OPTIONS_CMAKE)
|
||||
foreach(OPTION ${ImGui_OPTIONS})
|
||||
set(ImGui_OPTIONS_CMAKE "${ImGui_OPTIONS_CMAKE}# ${ImGui_${OPTION}_DESCRIPTION}\n")
|
||||
set(ImGui_OPTIONS_CMAKE "${ImGui_OPTIONS_CMAKE}set(ImGui_${OPTION} ${ImGui_${OPTION}})\n")
|
||||
endforeach()
|
||||
set(ImGui_OPTIONS_CMAKE "${ImGui_OPTIONS_CMAKE}" PARENT_SCOPE)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(imgui_export TARGET)
|
||||
if(CMAKE_VERSION VERSION_LESS 3.3)
|
||||
return()
|
||||
endif()
|
||||
export(TARGETS ${TARGET} NAMESPACE ImGui::
|
||||
FILE ImGui${TARGET}.cmake)
|
||||
install(TARGETS ${TARGET} EXPORT ${TARGET}
|
||||
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
|
||||
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
||||
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}")
|
||||
install(EXPORT ${TARGET} NAMESPACE ImGui::
|
||||
FILE ImGui${TARGET}.cmake
|
||||
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/imgui)
|
||||
endfunction()
|
||||
|
||||
function(imgui_core)
|
||||
set(TARGET Core)
|
||||
list(APPEND ImGui_SUPPORTED_COMPONENTS ${TARGET})
|
||||
set(ImGui_SUPPORTED_COMPONENTS "${ImGui_SUPPORTED_COMPONENTS}" PARENT_SCOPE)
|
||||
list(APPEND ImGui_AVAILABLE_COMPONENTS ${TARGET})
|
||||
set(ImGui_AVAILABLE_COMPONENTS "${ImGui_AVAILABLE_COMPONENTS}" PARENT_SCOPE)
|
||||
if(ImGui AND "${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${ImGui_SRCDIR}/examples")
|
||||
cmake_parse_arguments(TARGET "" "" "HEADERS;PRIVATE_HEADERS;SOURCES;SOURCES_GLOB;DEFINITIONS;LIBRARIES" ${ARGN})
|
||||
add_library(${TARGET} INTERFACE)
|
||||
include(GNUInstallDirs)
|
||||
target_include_directories(${TARGET} INTERFACE
|
||||
$<BUILD_INTERFACE:${ImGui_SRCDIR}>
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/imgui>)
|
||||
foreach(HEADER ${TARGET_HEADERS})
|
||||
target_sources(${TARGET}
|
||||
INTERFACE
|
||||
$<BUILD_INTERFACE:${ImGui_SRCDIR}/${HEADER}>
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/imgui/${HEADER}>)
|
||||
install(FILES ${ImGui_SRCDIR}/${HEADER}
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/imgui)
|
||||
endforeach()
|
||||
foreach(PRIVATE_HEADER ${TARGET_PRIVATE_HEADERS})
|
||||
install(FILES ${ImGui_SRCDIR}/${PRIVATE_HEADER}
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/imgui)
|
||||
endforeach()
|
||||
foreach(GLOB ${TARGET_SOURCES_GLOB})
|
||||
file(GLOB TARGET_SOURCES_BY_GLOB
|
||||
LIST_DIRECTORIES FALSE
|
||||
RELATIVE "${ImGui_SRCDIR}"
|
||||
"${ImGui_SRCDIR}/${GLOB}")
|
||||
list(APPEND TARGET_SOURCES ${TARGET_SOURCES_BY_GLOB})
|
||||
endforeach()
|
||||
foreach(SOURCE ${TARGET_SOURCES})
|
||||
target_sources(${TARGET}
|
||||
INTERFACE
|
||||
$<BUILD_INTERFACE:${ImGui_SRCDIR}/${SOURCE}>
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_DATAROOTDIR}/imgui/${SOURCE}>)
|
||||
install(FILES ${ImGui_SRCDIR}/${SOURCE}
|
||||
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/imgui)
|
||||
endforeach()
|
||||
foreach(DEFINITION ${TARGET_DEFINITIONS})
|
||||
target_compile_definitions(${TARGET} INTERFACE ${DEFINITION})
|
||||
endforeach()
|
||||
foreach(LIBRARY ${TARGET_LIBRARIES})
|
||||
target_link_libraries(${TARGET}
|
||||
INTERFACE ${LIBRARY})
|
||||
endforeach()
|
||||
imgui_export(${TARGET})
|
||||
elseif(ImGui)
|
||||
add_library(ImGui::${TARGET} ALIAS ${TARGET})
|
||||
else()
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/ImGui${TARGET}.cmake)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(imgui_library TARGET INFIX_PATH)
|
||||
cmake_parse_arguments(TARGET "" "" "HEADERS;SOURCES;DEFINITIONS;PACKAGES;TARGETS;COMPILE_OPTIONS;LINK_OPTIONS" ${ARGN})
|
||||
if(ImGui AND "${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${ImGui_SRCDIR}/examples")
|
||||
if(ImGui_3RDPARTY)
|
||||
set(TARGET_DEPENDENCIES TRUE)
|
||||
foreach(PACKAGE ${TARGET_PACKAGES})
|
||||
find_package(${PACKAGE} QUIET)
|
||||
if(NOT ${PACKAGE}_FOUND)
|
||||
message(AUTHOR_WARNING "Package ${PACKAGE} not found.")
|
||||
string(TOUPPER "${PACKAGE}" PACKAGE_UPPER)
|
||||
if(NOT ${PACKAGE_UPPER}_FOUND)
|
||||
set(TARGET_DEPENDENCIES FALSE)
|
||||
break()
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
if(TARGET_DEPENDENCIES)
|
||||
foreach(INTERFACE_TARGET ${TARGET_TARGETS})
|
||||
if(NOT TARGET ${INTERFACE_TARGET})
|
||||
if(INTERFACE_TARGET STREQUAL "OpenGL::GL"
|
||||
AND CMAKE_VERSION VERSION_LESS 3.8)
|
||||
list(REMOVE_ITEM TARGET_TARGETS "${INTERFACE_TARGET}")
|
||||
if(IS_ABSOLUTE "${OPENGL_gl_LIBRARY}")
|
||||
message(AUTHOR_WARNING "Replace target ${INTERFACE_TARGET} to ${OPENGL_gl_LIBRARY}.")
|
||||
list(APPEND TARGET_LIBRARIES "${OPENGL_gl_LIBRARY}")
|
||||
else()
|
||||
list(APPEND TARGET_TARGETS "${OPENGL_gl_LIBRARY}")
|
||||
endif()
|
||||
elseif(INTERFACE_TARGET STREQUAL "Freetype::Freetype")
|
||||
list(REMOVE_ITEM TARGET_TARGETS "${INTERFACE_TARGET}")
|
||||
if(IS_ABSOLUTE "${FREETYPE_LIBRARIES}")
|
||||
message(AUTHOR_WARNING "Replace target ${INTERFACE_TARGET} to ${FREETYPE_LIBRARIES}.")
|
||||
list(APPEND TARGET_LIBRARIES "${FREETYPE_LIBRARIES}")
|
||||
else()
|
||||
list(APPEND TARGET_TARGETS "${FREETYPE_LIBRARIES}")
|
||||
endif()
|
||||
list(APPEND TARGET_INCLUDE_DIRECTORIES "${FREETYPE_INCLUDE_DIRS}")
|
||||
else()
|
||||
message(WARNING "Target ${INTERFACE_TARGET} not found.")
|
||||
set(TARGET_DEPENDENCIES FALSE)
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
if(NOT TARGET_DEPENDENCIES)
|
||||
message(STATUS "Skip ${TARGET} library because not all dependencies found")
|
||||
return()
|
||||
endif()
|
||||
endif()
|
||||
add_library(${TARGET} INTERFACE)
|
||||
target_link_libraries(${TARGET} INTERFACE Core)
|
||||
foreach(HEADER ${TARGET_HEADERS})
|
||||
target_sources(${TARGET}
|
||||
INTERFACE
|
||||
$<BUILD_INTERFACE:${ImGui_SRCDIR}/${INFIX_PATH}/${HEADER}>
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/imgui/${HEADER}>)
|
||||
install(FILES ${ImGui_SRCDIR}/${INFIX_PATH}/${HEADER}
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/imgui)
|
||||
endforeach()
|
||||
foreach(SOURCE ${TARGET_SOURCES})
|
||||
target_sources(${TARGET}
|
||||
INTERFACE
|
||||
$<BUILD_INTERFACE:${ImGui_SRCDIR}/${INFIX_PATH}/${SOURCE}>
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_DATAROOTDIR}/imgui/${SOURCE}>)
|
||||
install(FILES ${ImGui_SRCDIR}/${INFIX_PATH}/${SOURCE}
|
||||
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/imgui)
|
||||
endforeach()
|
||||
foreach(DEFINITION ${TARGET_DEFINITIONS})
|
||||
target_compile_definitions(${TARGET} INTERFACE ${DEFINITION})
|
||||
endforeach()
|
||||
target_include_directories(${TARGET} INTERFACE
|
||||
$<BUILD_INTERFACE:${ImGui_SRCDIR}/${INFIX_PATH}>
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/imgui>)
|
||||
if(NOT ImGui_3RDPARTY)
|
||||
imgui_export(${TARGET})
|
||||
return()
|
||||
endif()
|
||||
if(";${TARGET_TARGETS};" MATCHES ";SDL2::SDL2;")
|
||||
get_target_property(SDL2_INCLUDE_DIRS SDL2::SDL2 INTERFACE_INCLUDE_DIRECTORIES)
|
||||
if(NOT ";${SDL2_INCLUDE_DIRS};" MATCHES "SDL2;")
|
||||
foreach(SDL2_INCLUDE_DIR ${SDL2_INCLUDE_DIRS})
|
||||
if(EXISTS ${SDL2_INCLUDE_DIR}/SDL2)
|
||||
target_include_directories(${TARGET} INTERFACE
|
||||
$<BUILD_INTERFACE:${SDL2_INCLUDE_DIR}/SDL2>
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/SDL2>)
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
endif()
|
||||
foreach(INTERFACE_TARGET ${TARGET_TARGETS})
|
||||
target_link_libraries(${TARGET}
|
||||
INTERFACE ${INTERFACE_TARGET})
|
||||
endforeach()
|
||||
foreach(INTERFACE_LIBRARY ${TARGET_LIBRARIES})
|
||||
target_link_libraries(${TARGET}
|
||||
INTERFACE $<BUILD_INTERFACE:${INTERFACE_LIBRARY}>)
|
||||
endforeach()
|
||||
foreach(INTERFACE_INCLUDE_DIRECTORIES ${TARGET_INCLUDE_DIRECTORIES})
|
||||
target_include_directories(${TARGET}
|
||||
INTERFACE $<BUILD_INTERFACE:${INTERFACE_INCLUDE_DIRECTORIES}>)
|
||||
endforeach()
|
||||
foreach(INTERFACE_COMPILE_OPTION ${TARGET_COMPILE_OPTIONS})
|
||||
target_compile_options(${TARGET}
|
||||
INTERFACE ${INTERFACE_COMPILE_OPTION})
|
||||
endforeach()
|
||||
foreach(INTERFACE_LINK_OPTION ${TARGET_LINK_OPTIONS})
|
||||
target_link_options(${TARGET}
|
||||
INTERFACE ${INTERFACE_LINK_OPTION})
|
||||
endforeach()
|
||||
imgui_export(${TARGET})
|
||||
elseif(ImGui)
|
||||
if(TARGET ${TARGET})
|
||||
list(APPEND ImGui_AVAILABLE_COMPONENTS ${TARGET})
|
||||
set(ImGui_AVAILABLE_COMPONENTS "${ImGui_AVAILABLE_COMPONENTS}" PARENT_SCOPE)
|
||||
if(";${ImGui_FIND_COMPONENTS};" MATCHES ";${TARGET};"
|
||||
AND NOT TARGET ImGui::${TARGET})
|
||||
add_library(ImGui::${TARGET} ALIAS ${TARGET})
|
||||
endif()
|
||||
endif()
|
||||
else()
|
||||
if(EXISTS ${CMAKE_CURRENT_LIST_DIR}/ImGui${TARGET}.cmake)
|
||||
list(APPEND ImGui_AVAILABLE_COMPONENTS ${TARGET})
|
||||
set(ImGui_AVAILABLE_COMPONENTS "${ImGui_AVAILABLE_COMPONENTS}" PARENT_SCOPE)
|
||||
endif()
|
||||
if(";${ImGui_FIND_COMPONENTS};" MATCHES ";${TARGET};")
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/ImGui${TARGET}.cmake)
|
||||
if(ImGui_3RDPARTY)
|
||||
include(CMakeFindDependencyMacro)
|
||||
foreach(PACKAGE ${TARGET_PACKAGES})
|
||||
find_dependency(${PACKAGE} REQUIRED)
|
||||
endforeach()
|
||||
else()
|
||||
message(STATUS "Please manualy link 3-rd party dependencies for ${TARGET} library")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(imgui_backend TARGET)
|
||||
list(APPEND ImGui_SUPPORTED_COMPONENTS ${TARGET})
|
||||
set(ImGui_SUPPORTED_COMPONENTS "${ImGui_SUPPORTED_COMPONENTS}" PARENT_SCOPE)
|
||||
if(NOT ImGui_BACKENDS)
|
||||
return()
|
||||
endif()
|
||||
imgui_library(${TARGET} backends ${ARGN})
|
||||
set(ImGui_AVAILABLE_COMPONENTS "${ImGui_AVAILABLE_COMPONENTS}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
function(imgui_misc TARGET MISC_PATH)
|
||||
list(APPEND ImGui_SUPPORTED_COMPONENTS ${TARGET})
|
||||
set(ImGui_SUPPORTED_COMPONENTS "${ImGui_SUPPORTED_COMPONENTS}" PARENT_SCOPE)
|
||||
if(NOT ImGui_MISC)
|
||||
return()
|
||||
endif()
|
||||
set(INFIX_PATH "misc/${MISC_PATH}")
|
||||
imgui_library(${TARGET} ${INFIX_PATH} ${ARGN})
|
||||
set(ImGui_AVAILABLE_COMPONENTS "${ImGui_AVAILABLE_COMPONENTS}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
function(imgui_example SUBDIRECTORY)
|
||||
if(NOT ImGui_EXAMPLES OR NOT ImGui_3RDPARTY)
|
||||
return()
|
||||
endif()
|
||||
cmake_parse_arguments(EXAMPLE "" "" "TARGETS;BACKENDS;MISC" ${ARGN})
|
||||
if(EXAMPLE_BACKENDS AND NOT ImGui_BACKENDS)
|
||||
return()
|
||||
endif()
|
||||
if(EXAMPLE_MISC AND NOT ImGui_MISC)
|
||||
return()
|
||||
endif()
|
||||
set(EXAMPLE_DEPENDENCIES TRUE)
|
||||
foreach(TARGET ${EXAMPLE_TARGETS} ${EXAMPLE_BACKENDS} ${EXAMPLE_MISC})
|
||||
if(NOT TARGET ${TARGET})
|
||||
set(EXAMPLE_DEPENDENCIES FALSE)
|
||||
endif()
|
||||
endforeach()
|
||||
if(EXAMPLE_DEPENDENCIES)
|
||||
add_subdirectory(${SUBDIRECTORY})
|
||||
else()
|
||||
message(STATUS "Skip ${SUBDIRECTORY} because not all dependencies found")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(imgui_tool TARGET)
|
||||
list(APPEND ImGui_SUPPORTED_COMPONENTS ${TARGET})
|
||||
set(ImGui_SUPPORTED_COMPONENTS "${ImGui_SUPPORTED_COMPONENTS}" PARENT_SCOPE)
|
||||
if(NOT ImGui_TOOLS)
|
||||
return()
|
||||
endif()
|
||||
if(ImGui AND "${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${ImGui_SRCDIR}/examples")
|
||||
cmake_parse_arguments(TARGET "" "OUTPUT_NAME" "SOURCES" ${ARGN})
|
||||
add_executable(${TARGET})
|
||||
if(TARGET_OUTPUT_NAME)
|
||||
set_target_properties(${TARGET} PROPERTIES
|
||||
OUTPUT_NAME ${TARGET_OUTPUT_NAME})
|
||||
endif()
|
||||
foreach(SOURCE ${TARGET_SOURCES})
|
||||
target_sources(${TARGET}
|
||||
PRIVATE ${ImGui_SRCDIR}/${SOURCE})
|
||||
endforeach()
|
||||
imgui_export(${TARGET})
|
||||
elseif(ImGui)
|
||||
add_executable(ImGui::${TARGET} ALIAS ${TARGET})
|
||||
else()
|
||||
if(EXISTS ${CMAKE_CURRENT_LIST_DIR}/ImGui${TARGET}.cmake)
|
||||
list(APPEND ImGui_AVAILABLE_COMPONENTS ${TARGET})
|
||||
set(ImGui_AVAILABLE_COMPONENTS "${ImGui_AVAILABLE_COMPONENTS}" PARENT_SCOPE)
|
||||
endif()
|
||||
if(";${ImGui_FIND_COMPONENTS};" MATCHES ";${TARGET};")
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/ImGui${TARGET}.cmake)
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
150
examples/ImGuiTargets.cmake
Normal file
150
examples/ImGuiTargets.cmake
Normal file
@ -0,0 +1,150 @@
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/ImGuiModule.cmake")
|
||||
|
||||
set(ImGui_SUPPORTED_COMPONENTS)
|
||||
set(ImGui_AVAILABLE_COMPONENTS)
|
||||
|
||||
set(_ImGui_DEFINITIONS)
|
||||
set(_ImGui_LIBRARIES)
|
||||
if(NOT "${ImGui_USER_CONFIG}" STREQUAL "")
|
||||
list(APPEND _ImGui_DEFINITIONS "IMGUI_USER_CONFIG=${ImGui_USER_CONFIG}")
|
||||
endif()
|
||||
if(ImGui_FREETYPE)
|
||||
list(APPEND _ImGui_DEFINITIONS "IMGUI_ENABLE_FREETYPE")
|
||||
list(APPEND _ImGui_LIBRARIES FreeType)
|
||||
endif()
|
||||
if(MINGW)
|
||||
list(APPEND _ImGui_LIBRARIES "imm32")
|
||||
endif()
|
||||
imgui_core(
|
||||
HEADERS
|
||||
imconfig.h
|
||||
imgui.h
|
||||
imgui_internal.h
|
||||
PRIVATE_HEADERS
|
||||
imstb_textedit.h
|
||||
imstb_truetype.h
|
||||
imstb_rectpack.h
|
||||
SOURCES_GLOB
|
||||
imgui*.cpp
|
||||
DEFINITIONS ${_ImGui_DEFINITIONS}
|
||||
LIBRARIES ${_ImGui_LIBRARIES})
|
||||
unset(_ImGui_DEFINITIONS)
|
||||
unset(_ImGui_LIBRARIES)
|
||||
|
||||
if(APPLE)
|
||||
set(_ImGui_PACKAGES GLUT)
|
||||
set(_ImGui_TARGETS GLUT::GLUT)
|
||||
else()
|
||||
set(_ImGui_PACKAGES FreeGLUT)
|
||||
set(_ImGui_TARGETS FreeGLUT::freeglut)
|
||||
endif()
|
||||
imgui_backend(ImplGLUT
|
||||
HEADERS imgui_impl_glut.h
|
||||
SOURCES imgui_impl_glut.cpp
|
||||
PACKAGES ${_ImGui_PACKAGES}
|
||||
TARGETS ${_ImGui_TARGETS})
|
||||
unset(_ImGui_PACKAGES)
|
||||
unset(_ImGui_TARGETS)
|
||||
|
||||
if(EMSCRIPTEN)
|
||||
set(_ImGui_COMPILE_OPTIONS "SHELL:-s USE_SDL=2")
|
||||
set(_ImGui_LINK_OPTIONS ${_ImGui_COMPILE_OPTIONS})
|
||||
else()
|
||||
if(MINGW)
|
||||
set(_ImGui_COMPILE_OPTIONS "-DSDL_MAIN_HANDLED")
|
||||
endif()
|
||||
set(_ImGui_PACKAGES SDL2)
|
||||
set(_ImGui_TARGETS SDL2::SDL2main SDL2::SDL2)
|
||||
endif()
|
||||
imgui_backend(ImplSDL2
|
||||
HEADERS imgui_impl_sdl2.h
|
||||
SOURCES imgui_impl_sdl2.cpp
|
||||
COMPILE_OPTIONS ${_ImGui_COMPILE_OPTIONS}
|
||||
LINK_OPTIONS ${_ImGui_LINK_OPTIONS}
|
||||
PACKAGES ${_ImGui_PACKAGES}
|
||||
TARGETS ${_ImGui_TARGETS})
|
||||
unset(_ImGui_COMPILE_OPTIONS)
|
||||
unset(_ImGui_LINK_OPTIONS)
|
||||
unset(_ImGui_PACKAGES)
|
||||
unset(_ImGui_TARGETS)
|
||||
|
||||
if(EMSCRIPTEN)
|
||||
set(_ImGui_COMPILE_OPTIONS "SHELL:-s USE_GLFW=3")
|
||||
set(_ImGui_LINK_OPTIONS ${_ImGui_COMPILE_OPTIONS})
|
||||
else()
|
||||
set(_ImGui_PACKAGES glfw3)
|
||||
set(_ImGui_TARGETS glfw)
|
||||
endif()
|
||||
imgui_backend(ImplGlfw
|
||||
HEADERS imgui_impl_glfw.h
|
||||
SOURCES imgui_impl_glfw.cpp
|
||||
COMPILE_OPTIONS ${_ImGui_COMPILE_OPTIONS}
|
||||
LINK_OPTIONS ${_ImGui_LINK_OPTIONS}
|
||||
PACKAGES ${_ImGui_PACKAGES}
|
||||
TARGETS ${_ImGui_TARGETS})
|
||||
unset(_ImGui_COMPILE_OPTIONS)
|
||||
unset(_ImGui_LINK_OPTIONS)
|
||||
unset(_ImGui_PACKAGES)
|
||||
unset(_ImGui_TARGETS)
|
||||
|
||||
imgui_backend(ImplOpenGL2
|
||||
HEADERS imgui_impl_opengl2.h
|
||||
SOURCES imgui_impl_opengl2.cpp
|
||||
PACKAGES OpenGL
|
||||
TARGETS OpenGL::GL)
|
||||
|
||||
if("${ImGui_OPENGL_LOADER}" STREQUAL "GL3W")
|
||||
set(_ImGui_DEFINITIONS "IMGUI_IMPL_OPENGL_LOADER_GL3W=1")
|
||||
set(_ImGui_PACKAGES gl3w)
|
||||
set(_ImGui_TARGETS gl3w)
|
||||
elseif("${ImGui_OPENGL_LOADER}" STREQUAL "GLEW")
|
||||
set(_ImGui_DEFINITIONS "IMGUI_IMPL_OPENGL_LOADER_GLEW=1")
|
||||
set(_ImGui_PACKAGES GLEW)
|
||||
set(_ImGui_TARGETS GLEW::GLEW)
|
||||
elseif("${ImGui_OPENGL_LOADER}" STREQUAL "GLAD")
|
||||
set(_ImGui_DEFINITIONS "IMGUI_IMPL_OPENGL_LOADER_GLAD=1")
|
||||
set(_ImGui_PACKAGES glad)
|
||||
set(_ImGui_TARGETS glad::glad)
|
||||
else()
|
||||
set(_ImGui_DEFINITIONS "IMGUI_IMPL_OPENGL_LOADER_CUSTOM=${ImGui_OPENGL_LOADER}")
|
||||
set(_ImGui_PACKAGES)
|
||||
set(_ImGui_TARGETS)
|
||||
endif()
|
||||
if(EMSCRIPTEN)
|
||||
set(_ImGui_PACKAGES)
|
||||
set(_ImGui_TARGETS)
|
||||
else()
|
||||
list(APPEND _ImGui_PACKAGES OpenGL)
|
||||
list(APPEND _ImGui_TARGETS OpenGL::GL)
|
||||
endif()
|
||||
imgui_backend(ImplOpenGL3
|
||||
HEADERS
|
||||
imgui_impl_opengl3.h
|
||||
imgui_impl_opengl3_loader.h
|
||||
SOURCES imgui_impl_opengl3.cpp
|
||||
DEFINITIONS ${_ImGui_DEFINITIONS}
|
||||
PACKAGES ${_ImGui_PACKAGES}
|
||||
TARGETS ${_ImGui_TARGETS})
|
||||
unset(_ImGui_DEFINITIONS)
|
||||
unset(_ImGui_PACKAGES)
|
||||
unset(_ImGui_TARGETS)
|
||||
|
||||
imgui_backend(ImplVulkan
|
||||
HEADERS imgui_impl_vulkan.h
|
||||
SOURCES imgui_impl_vulkan.cpp
|
||||
PACKAGES Vulkan
|
||||
TARGETS Vulkan::Vulkan)
|
||||
|
||||
imgui_misc(FreeType freetype
|
||||
HEADERS imgui_freetype.h
|
||||
SOURCES imgui_freetype.cpp
|
||||
PACKAGES Freetype
|
||||
TARGETS Freetype::Freetype)
|
||||
|
||||
imgui_misc(StdLib cpp
|
||||
HEADERS imgui_stdlib.h
|
||||
SOURCES imgui_stdlib.cpp)
|
||||
|
||||
imgui_tool(BinaryToCompressedC
|
||||
OUTPUT_NAME binary_to_compressed_c
|
||||
SOURCES misc/fonts/binary_to_compressed_c.cpp)
|
18
examples/example_emscripten_opengl3/CMakeLists.txt
Normal file
18
examples/example_emscripten_opengl3/CMakeLists.txt
Normal file
@ -0,0 +1,18 @@
|
||||
cmake_minimum_required(VERSION 3.1)
|
||||
|
||||
project(example_emscripten_opengl3
|
||||
LANGUAGES C CXX)
|
||||
|
||||
find_package(ImGui CONFIG REQUIRED
|
||||
COMPONENTS ImplSDL2 ImplOpenGL3)
|
||||
|
||||
add_executable(${PROJECT_NAME} main.cpp)
|
||||
|
||||
target_link_libraries(${PROJECT_NAME}
|
||||
PRIVATE ImGui::ImplSDL2 ImGui::ImplOpenGL3)
|
||||
|
||||
target_link_options(${PROJECT_NAME} PRIVATE
|
||||
"SHELL:--shell-file ${CMAKE_CURRENT_LIST_DIR}/shell_minimal.html")
|
||||
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||
SUFFIX .html)
|
16
examples/example_glfw_opengl2/CMakeLists.txt
Normal file
16
examples/example_glfw_opengl2/CMakeLists.txt
Normal file
@ -0,0 +1,16 @@
|
||||
cmake_minimum_required(VERSION 3.1)
|
||||
|
||||
project(example_glfw_opengl2
|
||||
LANGUAGES CXX)
|
||||
|
||||
find_package(ImGui CONFIG REQUIRED
|
||||
COMPONENTS ImplGlfw ImplOpenGL2)
|
||||
|
||||
add_executable(${PROJECT_NAME} main.cpp)
|
||||
|
||||
target_link_libraries(${PROJECT_NAME}
|
||||
PRIVATE ImGui::ImplGlfw ImGui::ImplOpenGL2)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
install(TARGETS ${PROJECT_NAME}
|
||||
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
16
examples/example_glfw_opengl3/CMakeLists.txt
Normal file
16
examples/example_glfw_opengl3/CMakeLists.txt
Normal file
@ -0,0 +1,16 @@
|
||||
cmake_minimum_required(VERSION 3.1)
|
||||
|
||||
project(example_glfw_opengl3
|
||||
LANGUAGES C CXX)
|
||||
|
||||
find_package(ImGui CONFIG REQUIRED
|
||||
COMPONENTS ImplGlfw ImplOpenGL3)
|
||||
|
||||
add_executable(${PROJECT_NAME} main.cpp)
|
||||
|
||||
target_link_libraries(${PROJECT_NAME}
|
||||
PRIVATE ImGui::ImplGlfw ImGui::ImplOpenGL3)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
install(TARGETS ${PROJECT_NAME}
|
||||
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
@ -1,45 +1,16 @@
|
||||
# Example usage:
|
||||
# mkdir build
|
||||
# cd build
|
||||
# cmake -g "Visual Studio 14 2015" ..
|
||||
cmake_minimum_required(VERSION 3.1)
|
||||
|
||||
cmake_minimum_required(VERSION 2.8)
|
||||
project(imgui_example_glfw_vulkan C CXX)
|
||||
project(example_glfw_vulkan
|
||||
LANGUAGES CXX)
|
||||
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE Debug CACHE STRING "" FORCE)
|
||||
endif()
|
||||
find_package(ImGui CONFIG REQUIRED
|
||||
COMPONENTS ImplGlfw ImplVulkan)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DVK_PROTOTYPES")
|
||||
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVK_PROTOTYPES")
|
||||
add_executable(${PROJECT_NAME} main.cpp)
|
||||
|
||||
# GLFW
|
||||
set(GLFW_DIR ../../../glfw) # Set this to point to an up-to-date GLFW repo
|
||||
option(GLFW_BUILD_EXAMPLES "Build the GLFW example programs" OFF)
|
||||
option(GLFW_BUILD_TESTS "Build the GLFW test programs" OFF)
|
||||
option(GLFW_BUILD_DOCS "Build the GLFW documentation" OFF)
|
||||
option(GLFW_INSTALL "Generate installation target" OFF)
|
||||
option(GLFW_DOCUMENT_INTERNALS "Include internals in documentation" OFF)
|
||||
add_subdirectory(${GLFW_DIR} binary_dir EXCLUDE_FROM_ALL)
|
||||
include_directories(${GLFW_DIR}/include)
|
||||
|
||||
# Dear ImGui
|
||||
set(IMGUI_DIR ../../)
|
||||
include_directories(${IMGUI_DIR} ${IMGUI_DIR}/backends ..)
|
||||
|
||||
# Libraries
|
||||
find_package(Vulkan REQUIRED)
|
||||
#find_library(VULKAN_LIBRARY
|
||||
#NAMES vulkan vulkan-1)
|
||||
#set(LIBRARIES "glfw;${VULKAN_LIBRARY}")
|
||||
set(LIBRARIES "glfw;Vulkan::Vulkan")
|
||||
|
||||
# Use vulkan headers from glfw:
|
||||
include_directories(${GLFW_DIR}/deps)
|
||||
|
||||
file(GLOB sources *.cpp)
|
||||
|
||||
add_executable(example_glfw_vulkan ${sources} ${IMGUI_DIR}/backends/imgui_impl_glfw.cpp ${IMGUI_DIR}/backends/imgui_impl_vulkan.cpp ${IMGUI_DIR}/imgui.cpp ${IMGUI_DIR}/imgui_draw.cpp ${IMGUI_DIR}/imgui_demo.cpp ${IMGUI_DIR}/imgui_tables.cpp ${IMGUI_DIR}/imgui_widgets.cpp)
|
||||
target_link_libraries(example_glfw_vulkan ${LIBRARIES})
|
||||
target_link_libraries(${PROJECT_NAME}
|
||||
PRIVATE ImGui::ImplGlfw ImGui::ImplVulkan)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
install(TARGETS ${PROJECT_NAME}
|
||||
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
||||
|
16
examples/example_glut_opengl2/CMakeLists.txt
Normal file
16
examples/example_glut_opengl2/CMakeLists.txt
Normal file
@ -0,0 +1,16 @@
|
||||
cmake_minimum_required(VERSION 3.1)
|
||||
|
||||
project(example_glut_opengl2
|
||||
LANGUAGES CXX)
|
||||
|
||||
find_package(ImGui CONFIG REQUIRED
|
||||
COMPONENTS ImplGLUT ImplOpenGL2)
|
||||
|
||||
add_executable(${PROJECT_NAME} main.cpp)
|
||||
|
||||
target_link_libraries(${PROJECT_NAME}
|
||||
PRIVATE ImGui::ImplGLUT ImGui::ImplOpenGL2)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
install(TARGETS ${PROJECT_NAME}
|
||||
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
16
examples/example_null/CMakeLists.txt
Normal file
16
examples/example_null/CMakeLists.txt
Normal file
@ -0,0 +1,16 @@
|
||||
cmake_minimum_required(VERSION 3.1)
|
||||
|
||||
project(example_null
|
||||
LANGUAGES CXX)
|
||||
|
||||
find_package(ImGui CONFIG REQUIRED
|
||||
COMPONENTS Core)
|
||||
|
||||
add_executable(${PROJECT_NAME} main.cpp)
|
||||
|
||||
target_link_libraries(${PROJECT_NAME}
|
||||
PRIVATE ImGui::Core)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
install(TARGETS ${PROJECT_NAME}
|
||||
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
16
examples/example_sdl2_opengl2/CMakeLists.txt
Normal file
16
examples/example_sdl2_opengl2/CMakeLists.txt
Normal file
@ -0,0 +1,16 @@
|
||||
cmake_minimum_required(VERSION 3.1)
|
||||
|
||||
project(example_sdl_opengl2
|
||||
LANGUAGES CXX)
|
||||
|
||||
find_package(ImGui CONFIG REQUIRED
|
||||
COMPONENTS ImplSDL2 ImplOpenGL2)
|
||||
|
||||
add_executable(${PROJECT_NAME} main.cpp)
|
||||
|
||||
target_link_libraries(${PROJECT_NAME}
|
||||
PRIVATE ImGui::ImplSDL2 ImGui::ImplOpenGL2)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
install(TARGETS ${PROJECT_NAME}
|
||||
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
16
examples/example_sdl2_opengl3/CMakeLists.txt
Normal file
16
examples/example_sdl2_opengl3/CMakeLists.txt
Normal file
@ -0,0 +1,16 @@
|
||||
cmake_minimum_required(VERSION 3.1)
|
||||
|
||||
project(example_sdl_opengl3
|
||||
LANGUAGES C CXX)
|
||||
|
||||
find_package(ImGui CONFIG REQUIRED
|
||||
COMPONENTS ImplSDL2 ImplOpenGL3)
|
||||
|
||||
add_executable(${PROJECT_NAME} main.cpp)
|
||||
|
||||
target_link_libraries(${PROJECT_NAME}
|
||||
PRIVATE ImGui::ImplSDL2 ImGui::ImplOpenGL3)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
install(TARGETS ${PROJECT_NAME}
|
||||
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
16
examples/example_sdl2_vulkan/CMakeLists.txt
Normal file
16
examples/example_sdl2_vulkan/CMakeLists.txt
Normal file
@ -0,0 +1,16 @@
|
||||
cmake_minimum_required(VERSION 3.1)
|
||||
|
||||
project(example_sdl_vulkan
|
||||
LANGUAGES CXX)
|
||||
|
||||
find_package(ImGui CONFIG REQUIRED
|
||||
COMPONENTS ImplSDL2 ImplVulkan)
|
||||
|
||||
add_executable(${PROJECT_NAME} main.cpp)
|
||||
|
||||
target_link_libraries(${PROJECT_NAME}
|
||||
PRIVATE ImGui::ImplSDL2 ImGui::ImplVulkan)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
install(TARGETS ${PROJECT_NAME}
|
||||
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
Loading…
x
Reference in New Issue
Block a user