Skip to content

Commit

Permalink
add example CMake configuration
Browse files Browse the repository at this point in the history
  • Loading branch information
Qix- committed Feb 17, 2020
1 parent f339b24 commit 98ea025
Show file tree
Hide file tree
Showing 28 changed files with 523 additions and 0 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build/
101 changes: 101 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
project (imgui)
cmake_minimum_required (VERSION 3.2)

option (IMGUI_EXAMPLES "Build ImGui examples" ON)
option (IMGUI_DEMO "Include the ImGui demo window implementation in library" ON)

option (IMGUI_IMPL_SDL "Build the SDL implementation (only if supported)" ON)
option (IMGUI_IMPL_METAL "Build the Metal implementation (only if supported)" ${APPLE})
option (IMGUI_IMPL_OSX "Build the OSX implementation (only if supported)" ${APPLE})
option (IMGUI_IMPL_WIN32 "Build the Win32 (native winapi) implementation (only if supported)" ${WIN32})
option (IMGUI_IMPL_GLFW "Build the GLFW implementation (only if supported)" ON)
option (IMGUI_IMPL_GLUT "Build the GLUT implementation (only if supported)" ON)
option (IMGUI_IMPL_OPENGL "Build the OpenGL implementation (only if supported)" ON)
option (IMGUI_IMPL_OPENGL2 "Build the OpenGL 2 (legacy) implementation (only if supported)" ${IMGUI_IMPL_OPENGL})
option (IMGUI_IMPL_DX9 "Build the DirectX 9 implementation (only if supported)" ${WIN32})
option (IMGUI_IMPL_DX10 "Build the DirectX 10 implementation (only if supported)" ${WIN32})
option (IMGUI_IMPL_DX11 "Build the DirectX 11 implementation (only if supported)" ${WIN32})
option (IMGUI_IMPL_DX12 "Build the DirectX 12 implementation (only if supported)" ${WIN32})

set (CMAKE_CXX_STANDARD 11)

if (IMGUI_DEMO)
set (IMGUI_DEMO_SRC imgui_demo.cpp)
endif ()

add_library (imgui STATIC
imgui.cpp
imgui_draw.cpp
imgui_widgets.cpp
${IMGUI_DEMO_SRC}
)

target_include_directories (imgui PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")

if (IMGUI_EXAMPLES)
# Sets up polyfill libraries for Windows examples (e.g. GLFW)
include (examples/libs/glfw.cmake)
endif ()

if (NOT IMGUI_DEMO)
target_compile_definitions (imgui PUBLIC -DIMGUI_DISABLE_DEMO_WINDOWS=1)
endif ()

if (IMGUI_IMPL_SDL)
include (examples/imgui_impl_sdl.cmake)
endif ()
if (IMGUI_IMPL_METAL)
include (examples/imgui_impl_metal.cmake)
endif ()
if (IMGUI_IMPL_OSX)
include (examples/imgui_impl_osx.cmake)
endif ()
if (IMGUI_IMPL_WIN32)
include (examples/imgui_impl_win32.cmake)
endif ()
if (IMGUI_IMPL_GLFW)
include (examples/imgui_impl_glfw.cmake)
endif ()
if (IMGUI_IMPL_OPENGL OR IMGUI_IMPL_OPENGL2)
include (examples/imgui_impl_opengl.cmake)
endif ()
if (IMGUI_IMPL_GLUT)
include (examples/imgui_impl_glut.cmake)
endif ()
if (IMGUI_IMPL_DX9)
include (examples/imgui_impl_dx9.cmake)
endif ()
if (IMGUI_IMPL_DX10)
include (examples/imgui_impl_dx10.cmake)
endif ()
if (IMGUI_IMPL_DX11)
include (examples/imgui_impl_dx11.cmake)
endif ()
if (IMGUI_IMPL_DX12)
include (examples/imgui_impl_dx12.cmake)
endif ()

if (IMGUI_EXAMPLES)
set (IMGUI_EXAMPLE_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}")

#add_subdirectory (examples/example_allegro5)
add_subdirectory (examples/example_apple_metal)
add_subdirectory (examples/example_apple_opengl2)
#add_subdirectory (examples/example_emscripten)
add_subdirectory (examples/example_glfw_metal)
add_subdirectory (examples/example_glfw_opengl2)
add_subdirectory (examples/example_glfw_opengl3)
#add_subdirectory (examples/example_glfw_vulkan)
add_subdirectory (examples/example_glut_opengl2)
#add_subdirectory (examples/example_marmalade)
add_subdirectory (examples/example_null)
#add_subdirectory (examples/example_sdl_directx11)
add_subdirectory (examples/example_sdl_metal)
add_subdirectory (examples/example_sdl_opengl2)
add_subdirectory (examples/example_sdl_opengl3)
#add_subdirectory (examples/example_sdl_vulkan)
add_subdirectory (examples/example_win32_directx10)
add_subdirectory (examples/example_win32_directx11)
add_subdirectory (examples/example_win32_directx12)
add_subdirectory (examples/example_win32_directx9)
endif ()
18 changes: 18 additions & 0 deletions examples/example_apple_metal/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
if (TARGET imgui-metal AND TARGET imgui-osx)
# TODO proper bundling of assets for macOS and iOS

add_executable (imgui_example_apple_metal
Shared/main.m
Shared/AppDelegate.m
Shared/Renderer.mm
Shared/ViewController.mm
)

target_link_libraries (imgui_example_apple_metal
imgui-metal imgui-osx
)

set_target_properties (imgui_example_apple_metal
PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${IMGUI_EXAMPLE_OUTPUT_DIR}"
)
endif ()
11 changes: 11 additions & 0 deletions examples/example_apple_opengl2/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
if (TARGET imgui-osx AND TARGET imgui-opengl2)
add_executable (imgui_example_apple_opengl2 main.mm)

target_link_libraries (imgui_example_apple_opengl2
imgui-osx imgui-opengl2
)

set_target_properties (imgui_example_apple_opengl2
PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${IMGUI_EXAMPLE_OUTPUT_DIR}"
)
endif ()
11 changes: 11 additions & 0 deletions examples/example_glfw_metal/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
if (TARGET imgui-glfw AND TARGET imgui-metal)
add_executable (imgui_example_glfw_metal main.mm)

target_link_libraries (imgui_example_glfw_metal
imgui-glfw imgui-metal
)

set_target_properties (imgui_example_glfw_metal
PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${IMGUI_EXAMPLE_OUTPUT_DIR}"
)
endif ()
11 changes: 11 additions & 0 deletions examples/example_glfw_opengl2/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
if (TARGET imgui-glfw AND TARGET imgui-opengl2)
add_executable (imgui_example_glfw_opengl2 main.cpp)

target_link_libraries (imgui_example_glfw_opengl2
imgui-glfw imgui-opengl2
)

set_target_properties (imgui_example_glfw_opengl2
PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${IMGUI_EXAMPLE_OUTPUT_DIR}"
)
endif ()
11 changes: 11 additions & 0 deletions examples/example_glfw_opengl3/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
if (TARGET imgui-glfw AND TARGET imgui-opengl)
add_executable (imgui_example_glfw_opengl3 main.cpp)

target_link_libraries (imgui_example_glfw_opengl3
imgui-glfw imgui-opengl
)

set_target_properties (imgui_example_glfw_opengl3
PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${IMGUI_EXAMPLE_OUTPUT_DIR}"
)
endif ()
11 changes: 11 additions & 0 deletions examples/example_glut_opengl2/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
if (TARGET imgui-glut AND TARGET imgui-opengl2)
add_executable (imgui_example_glut_opengl2 main.cpp)

target_link_libraries (imgui_example_glut_opengl2
imgui-glut imgui-opengl2
)

set_target_properties (imgui_example_glut_opengl2
PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${IMGUI_EXAMPLE_OUTPUT_DIR}"
)
endif ()
6 changes: 6 additions & 0 deletions examples/example_null/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
add_executable (imgui_example_null main.cpp)
target_link_libraries (imgui_example_null imgui)

set_target_properties (imgui_example_null
PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${IMGUI_EXAMPLE_OUTPUT_DIR}"
)
11 changes: 11 additions & 0 deletions examples/example_sdl_metal/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
if (TARGET imgui-sdl AND TARGET imgui-metal)
add_executable (imgui_example_sdl_metal main.mm)

target_link_libraries (imgui_example_sdl_metal
imgui-sdl imgui-metal
)

set_target_properties (imgui_example_sdl_metal
PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${IMGUI_EXAMPLE_OUTPUT_DIR}"
)
endif ()
11 changes: 11 additions & 0 deletions examples/example_sdl_opengl2/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
if (TARGET imgui-sdl AND TARGET imgui-opengl2)
add_executable (imgui_example_sdl_opengl2 WIN32 main.cpp)

target_link_libraries (imgui_example_sdl_opengl2
imgui-sdl imgui-opengl2
)

set_target_properties (imgui_example_sdl_opengl2
PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${IMGUI_EXAMPLE_OUTPUT_DIR}"
)
endif ()
11 changes: 11 additions & 0 deletions examples/example_sdl_opengl3/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
if (TARGET imgui-sdl AND TARGET imgui-opengl)
add_executable (imgui_example_sdl_opengl3 main.cpp)

target_link_libraries (imgui_example_sdl_opengl3
imgui-sdl imgui-opengl
)

set_target_properties (imgui_example_sdl_opengl3
PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${IMGUI_EXAMPLE_OUTPUT_DIR}"
)
endif ()
11 changes: 11 additions & 0 deletions examples/example_win32_directx10/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
if (TARGET imgui-win32 AND TARGET imgui-dx10)
add_executable (imgui_example_win32_directx10 main.cpp)

target_link_libraries (imgui_example_win32_directx10
imgui-win32 imgui-dx10
)

set_target_properties (imgui_example_win32_directx10
PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${IMGUI_EXAMPLE_OUTPUT_DIR}"
)
endif ()
11 changes: 11 additions & 0 deletions examples/example_win32_directx11/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
if (TARGET imgui-win32 AND TARGET imgui-dx11)
add_executable (imgui_example_win32_directx11 main.cpp)

target_link_libraries (imgui_example_win32_directx11
imgui-win32 imgui-dx11
)

set_target_properties (imgui_example_win32_directx11
PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${IMGUI_EXAMPLE_OUTPUT_DIR}"
)
endif ()
11 changes: 11 additions & 0 deletions examples/example_win32_directx12/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
if (TARGET imgui-win32 AND TARGET imgui-dx12)
add_executable (imgui_example_win32_directx12 main.cpp)

target_link_libraries (imgui_example_win32_directx12
imgui-win32 imgui-dx12
)

set_target_properties (imgui_example_win32_directx12
PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${IMGUI_EXAMPLE_OUTPUT_DIR}"
)
endif ()
11 changes: 11 additions & 0 deletions examples/example_win32_directx9/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
if (TARGET imgui-win32 AND TARGET imgui-dx9)
add_executable (imgui_example_win32_directx9 main.cpp)

target_link_libraries (imgui_example_win32_directx9
imgui-win32 imgui-dx9
)

set_target_properties (imgui_example_win32_directx9
PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${IMGUI_EXAMPLE_OUTPUT_DIR}"
)
endif ()
26 changes: 26 additions & 0 deletions examples/imgui_impl_dx10.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
if (WIN32)
find_library (D3D10_LIBRARY "d3d10")
if (NOT D3D10_LIBRARY)
message (WARNING "IMGUI_IMPL_DX10 set to ON but d3d10.dll not found")
endif ()

find_library (DXGI_LIBRARY "dxgi")
if (NOT DXGI_LIBRARY)
message (WARNING "IMGUI_IMPL_DX10 set to ON but dxgi.dll not found")
endif ()

if (D3D10_LIBRARY AND DXGI_LIBRARY)
add_library (imgui-dx10 OBJECT
"${CMAKE_CURRENT_LIST_DIR}/imgui_impl_dx10.cpp"
)

target_link_libraries (imgui-dx10 PUBLIC
imgui
${D3D10_LIBRARY} ${DXGI_LIBRARY}
)

target_include_directories (imgui-dx10 PUBLIC "${CMAKE_CURRENT_LIST_DIR}")
endif ()
else ()
message (WARNING "IMGUI_IMPL_DX10 set to ON but platform is not Win32")
endif ()
26 changes: 26 additions & 0 deletions examples/imgui_impl_dx11.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
if (WIN32)
find_library (D3D11_LIBRARY "d3d11")
if (NOT D3D11_LIBRARY)
message (WARNING "IMGUI_IMPL_DX11 set to ON but d3d11.dll not found")
endif ()

find_library (DXGI_LIBRARY "dxgi")
if (NOT DXGI_LIBRARY)
message (WARNING "IMGUI_IMPL_DX11 set to ON but dxgi.dll not found")
endif ()

if (D3D11_LIBRARY AND DXGI_LIBRARY)
add_library (imgui-dx11 OBJECT
"${CMAKE_CURRENT_LIST_DIR}/imgui_impl_dx11.cpp"
)

target_link_libraries (imgui-dx11 PUBLIC
imgui
${D3D11_LIBRARY} ${DXGI_LIBRARY}
)

target_include_directories (imgui-dx11 PUBLIC "${CMAKE_CURRENT_LIST_DIR}")
endif ()
else ()
message (WARNING "IMGUI_IMPL_DX11 set to ON but platform is not Win32")
endif ()
26 changes: 26 additions & 0 deletions examples/imgui_impl_dx12.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
if (WIN32)
find_library (D3D12_LIBRARY "d3d12")
if (NOT D3D12_LIBRARY)
message (WARNING "IMGUI_IMPL_DX12 set to ON but d3d12.dll not found")
endif ()

find_library (DXGI_LIBRARY "dxgi")
if (NOT DXGI_LIBRARY)
message (WARNING "IMGUI_IMPL_DX12 set to ON but dxgi.dll not found")
endif ()

if (D3D12_LIBRARY AND DXGI_LIBRARY)
add_library (imgui-dx12 OBJECT
"${CMAKE_CURRENT_LIST_DIR}/imgui_impl_dx12.cpp"
)

target_link_libraries (imgui-dx12 PUBLIC
imgui
${D3D12_LIBRARY} ${DXGI_LIBRARY}
)

target_include_directories (imgui-dx12 PUBLIC "${CMAKE_CURRENT_LIST_DIR}")
endif ()
else ()
message (WARNING "IMGUI_IMPL_DX12 set to ON but platform is not Win32")
endif ()
19 changes: 19 additions & 0 deletions examples/imgui_impl_dx9.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
if (WIN32)
find_library (D3D9_LIBRARY "d3d9")
if (D3D9_LIBRARY)
add_library (imgui-dx9 OBJECT
"${CMAKE_CURRENT_LIST_DIR}/imgui_impl_dx9.cpp"
)

target_link_libraries (imgui-dx9 PUBLIC
imgui
${D3D9_LIBRARY}
)

target_include_directories (imgui-dx9 PUBLIC "${CMAKE_CURRENT_LIST_DIR}")
else ()
message (WARNING "IMGUI_IMPL_DX9 set to ON but d3d9.dll not found")
endif ()
else ()
message (WARNING "IMGUI_IMPL_DX9 set to ON but platform is not Win32")
endif ()
14 changes: 14 additions & 0 deletions examples/imgui_impl_glfw.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
if (NOT TARGET glfw)
find_package (GLFW3 QUIET)
endif ()

if (TARGET glfw OR GLFW3_DIR)
add_library (imgui-glfw OBJECT
"${CMAKE_CURRENT_LIST_DIR}/imgui_impl_glfw.cpp"
)

target_link_libraries (imgui-glfw PUBLIC imgui glfw)
target_include_directories (imgui-glfw PUBLIC "${CMAKE_CURRENT_LIST_DIR}")
else ()
message (WARNING "IMGUI_IMPL_GLFW set to ON but glfw3 could not be located")
endif ()
Loading

0 comments on commit 98ea025

Please sign in to comment.