cmake_minimum_required(VERSION 3.21) project(S3Native CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # --------------------------------------------------------------------------- # Dear ImGui — fetched once at configure time, built as a static lib. # Only the D3D11 backend is compiled; Win32 input is fed manually via atomics. # --------------------------------------------------------------------------- include(FetchContent) FetchContent_Declare( imgui GIT_REPOSITORY https://github.com/ocornut/imgui.git GIT_TAG v1.90.4 GIT_SHALLOW TRUE ) FetchContent_MakeAvailable(imgui) add_library(imgui STATIC ${imgui_SOURCE_DIR}/imgui.cpp ${imgui_SOURCE_DIR}/imgui_draw.cpp ${imgui_SOURCE_DIR}/imgui_tables.cpp ${imgui_SOURCE_DIR}/imgui_widgets.cpp ${imgui_SOURCE_DIR}/backends/imgui_impl_dx11.cpp ) target_include_directories(imgui PUBLIC ${imgui_SOURCE_DIR} ${imgui_SOURCE_DIR}/backends ) # imgui_impl_dx11.cpp calls D3DCompile at runtime to build its own shaders. target_link_libraries(imgui PUBLIC d3d11 d3dcompiler) # Suppress MSVC warnings inside third-party ImGui source. if(MSVC) target_compile_options(imgui PRIVATE /W0) endif() # --------------------------------------------------------------------------- # S3Native native plugin DLL # --------------------------------------------------------------------------- add_library(S3Native SHARED src/dllmain.cpp src/exports.cpp src/popout_windows.cpp src/d3d11_renderer.cpp ) target_include_directories(S3Native PRIVATE include external ) target_link_libraries(S3Native PRIVATE imgui d3d11 dxgi d3dcompiler dwmapi # DwmSetWindowAttribute (dark title bar, rounded corners) shell32 # ExtractIconExW (EXE icon loading) ) set_target_properties(S3Native PROPERTIES OUTPUT_NAME "S3Native" RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" ) if(MSVC) target_compile_options(S3Native PRIVATE /W3 /WX- /GR- /EHsc) target_compile_options(S3Native PRIVATE $<$:/Zi>) target_link_options(S3Native PRIVATE $<$:/DEBUG /OPT:REF /OPT:ICF>) endif()