CMakeLists.txt 1.7 KB

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