CMakeLists.txt 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. cmake_minimum_required(VERSION 3.22)
  2. project(kariokaEngine LANGUAGES CXX)
  3. set(CMAKE_CXX_STANDARD 17)
  4. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  5. find_package(SDL2 REQUIRED)
  6. find_package(SDL2_image REQUIRED)
  7. find_package(SDL2_mixer REQUIRED)
  8. # Python
  9. set(PYBIND11_FINDPYTHON ON)
  10. add_subdirectory(third_party/pybind11)
  11. # EnTT
  12. include_directories(third_party/entt/single_include)
  13. # ImGui
  14. add_library(imgui STATIC
  15. third_party/imgui/imgui.cpp
  16. third_party/imgui/imgui_draw.cpp
  17. third_party/imgui/imgui_tables.cpp
  18. third_party/imgui/imgui_widgets.cpp
  19. third_party/imgui/backends/imgui_impl_sdl2.cpp
  20. third_party/imgui/backends/imgui_impl_sdlrenderer2.cpp
  21. )
  22. target_include_directories(imgui PUBLIC
  23. third_party/imgui
  24. third_party/imgui/backends
  25. )
  26. target_link_libraries(imgui SDL2::SDL2)
  27. add_executable(kariokaEngine
  28. # Core
  29. src/main.cpp
  30. src/Engine.cpp
  31. # States
  32. src/states/StateManager.cpp
  33. src/states/MainMenuState.cpp
  34. # Systems
  35. # Components
  36. # etc
  37. )
  38. target_link_libraries(kariokaEngine PRIVATE
  39. pybind11::embed
  40. SDL2::SDL2
  41. SDL2_image::SDL2_image
  42. SDL2_mixer::SDL2_mixer
  43. imgui
  44. )
  45. target_compile_definitions(kariokaEngine PRIVATE SDL_MAIN_HANDLED)
  46. if(MINGW)
  47. target_link_libraries(kariokaEngine PRIVATE mingw32)
  48. endif()
  49. add_custom_command(TARGET kariokaEngine POST_BUILD COMMAND
  50. ${CMAKE_COMMAND} -E copy_directory
  51. ${CMAKE_SOURCE_DIR}/assets
  52. $<TARGET_FILE_DIR:kariokaEngine>/assets
  53. )