From ac1ab394d1ce26463bf0b1720659a77ac8174016 Mon Sep 17 00:00:00 2001 From: Jalius Welch Date: Sat, 23 Nov 2024 01:36:12 -0700 Subject: [PATCH 1/2] add example cmake file for win32 directx11 backend --- .../example_win32_directx11/CMakeLists.txt | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 examples/example_win32_directx11/CMakeLists.txt diff --git a/examples/example_win32_directx11/CMakeLists.txt b/examples/example_win32_directx11/CMakeLists.txt new file mode 100644 index 000000000000..1a524e158294 --- /dev/null +++ b/examples/example_win32_directx11/CMakeLists.txt @@ -0,0 +1,58 @@ +# CMakeLists for building imgui example app +# To build: $ cd example_win32_directx11 +# $ mkdir build && cd build +# $ cmake .. (Generator flag optional: eg -G 'MSYS Makefiles') +# $ make OR ninja OR .sln (depends on your cmake-generator) + +cmake_minimum_required(VERSION 3.12) # requires 3.12 for the list(TRANSFORM ...) shortcut + +project(imgui_win32_directx11 LANGUAGES CXX VERSION 0.0.1) + +# set the path of imgui top-level folder here +set(IMGUI_DIR ../../) + +# add platform-agnostic sources... +set(IMGUI_SRC + imgui_draw.cpp + imgui_demo.cpp + imgui_tables.cpp + imgui_widgets.cpp + imgui.cpp) +# add platform-specific sources... +set(IMGUI_BACKEND_SRC + backends/imgui_impl_dx11.cpp + backends/imgui_impl_win32.cpp) + +# prepend imgui top-level path to src files +list(TRANSFORM IMGUI_SRC PREPEND ${IMGUI_DIR}) +list(TRANSFORM IMGUI_BACKEND_SRC PREPEND ${IMGUI_DIR}) + +# compiler flags +set(CFLAGS + -Wall + -Werror + -Wnarrowing + -O3 + -DNDEBUG) +# necessary graphics libraries +set(LDLIBS + d3d11 + d3dcompiler + dwmapi) + +# add library with the imgui sources +add_library(imgui_win32_directx11 ${IMGUI_SRC} ${IMGUI_BACKEND_SRC}) +# set compiler flags +target_compile_options(imgui_win32_directx11 PRIVATE ${CFLAGS}) +# link against necessary graphics libraries +target_link_libraries(imgui_win32_directx11 PRIVATE ${LDLIBS}) +# include headers from the IMGUI_DIR +target_include_directories(imgui_win32_directx11 PRIVATE ${IMGUI_DIR}) + +# finally, build the example main.cpp +add_executable(imgui_win32_directx11_example main.cpp) +# link example exe against the imgui library +target_link_libraries(imgui_win32_directx11_example PRIVATE imgui_win32_directx11) +# include headers from the IMGUI_DIR and backends +target_include_directories(imgui_win32_directx11_example PRIVATE ${IMGUI_DIR} ${IMGUI_DIR}/backends) + From 5142365ddeb32e2a8804e842cd8d9c4322415e37 Mon Sep 17 00:00:00 2001 From: Jalius Welch Date: Sat, 23 Nov 2024 02:42:43 -0700 Subject: [PATCH 2/2] add compiler flags to final executable. reduce the comments --- examples/example_win32_directx11/CMakeLists.txt | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/examples/example_win32_directx11/CMakeLists.txt b/examples/example_win32_directx11/CMakeLists.txt index 1a524e158294..8a0032f97d32 100644 --- a/examples/example_win32_directx11/CMakeLists.txt +++ b/examples/example_win32_directx11/CMakeLists.txt @@ -27,32 +27,26 @@ set(IMGUI_BACKEND_SRC list(TRANSFORM IMGUI_SRC PREPEND ${IMGUI_DIR}) list(TRANSFORM IMGUI_BACKEND_SRC PREPEND ${IMGUI_DIR}) -# compiler flags set(CFLAGS -Wall -Werror -Wnarrowing -O3 -DNDEBUG) -# necessary graphics libraries set(LDLIBS d3d11 d3dcompiler dwmapi) -# add library with the imgui sources +# build library with the imgui sources add_library(imgui_win32_directx11 ${IMGUI_SRC} ${IMGUI_BACKEND_SRC}) -# set compiler flags target_compile_options(imgui_win32_directx11 PRIVATE ${CFLAGS}) -# link against necessary graphics libraries target_link_libraries(imgui_win32_directx11 PRIVATE ${LDLIBS}) -# include headers from the IMGUI_DIR target_include_directories(imgui_win32_directx11 PRIVATE ${IMGUI_DIR}) -# finally, build the example main.cpp +# finally, build the example main.cpp and link to imgui library created above add_executable(imgui_win32_directx11_example main.cpp) -# link example exe against the imgui library +target_compile_options(imgui_win32_directx11_example PRIVATE ${CFLAGS}) target_link_libraries(imgui_win32_directx11_example PRIVATE imgui_win32_directx11) -# include headers from the IMGUI_DIR and backends target_include_directories(imgui_win32_directx11_example PRIVATE ${IMGUI_DIR} ${IMGUI_DIR}/backends)