cmake_minimum_required(VERSION 3.22) project(kge LANGUAGES CXX VERSION 0.0.1) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) include(FetchContent) FetchContent_Declare( klib GIT_REPOSITORY https://git.wntrmute.dev/kyle/klib GIT_TAG master FIND_PACKAGE_ARGS NAMES klib ) FetchContent_MakeAvailable(klib) find_package(SDL2 REQUIRED) find_package(OpenGL REQUIRED) find_package(klib 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} ${KLIB_INCLUDE_DIRS}) configure_file(kge.desktop.in kge.desktop @ONLY) add_executable(kge kge.cc ) target_link_libraries(kge imgui ${KLIB_LIBRARIES}) install(TARGETS kge RUNTIME DESTINATION bin COMPONENT dist) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/kge.desktop DESTINATION share/applications COMPONENT dist) include(CMakePack.txt)