cmake_minimum_required(VERSION 3.22) project(kge LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(SDL2 REQUIRED) find_package(OpenGL REQUIRED) find_package(Freetype) if (DEFINED FREETYPE_INCLUDE_DIRS) add_definitions(-DIMGUI_ENABLE_FREETYPE) set(FREETYPE_SOURCES ext/imgui/misc/freetype/imgui_freetype.cpp ext/imgui/misc/freetype/imgui_freetype.h) endif() if(MSVC) add_compile_options("/W4" "$<$:/O2>") else() add_compile_options("-Wall" "-Wextra" "-Werror" "$<$:-O3>") if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") add_compile_options("-stdlib=libc++") else() # nothing special for gcc at the moment endif() endif() add_library(imgui STATIC # Main Imgui files ext/imgui/imgui.cpp ext/imgui/imgui.h ext/imgui/imgui_draw.cpp ext/imgui/imgui_tables.cpp ext/imgui/imgui_widgets.cpp ext/imgui/imgui_demo.cpp ext/imgui/backends/imgui_impl_sdl2.cpp ext/imgui/backends/imgui_impl_sdl2.h ext/imgui/backends/imgui_impl_opengl3.cpp ext/imgui/backends/imgui_impl_opengl3.h $,${FREETYPE_SOURCES},>) add_library(imgui::imgui ALIAS imgui) target_link_libraries(imgui PUBLIC OpenGL::GL $,Freetype::Freetype,> $ $,SDL2::SDL2,SDL2::SDL2-static>) target_include_directories(imgui PUBLIC ext/imgui/ ext/imgui/backends/ ext/imgui/misc/freetype $,${FREETYPE_INCLUDE_DIRS},>) include_directories(ext/ ${SDL2_INCLUDE_DIRS}) add_executable(BufferTest BufferTest.cc Buffer.cc) add_test(BufferTest COMMAND BufferTest) add_executable(kge kge.cc Buffer.cc Buffer.h ) target_link_libraries(kge imgui)