cmake_minimum_required(VERSION 3.20) project(ManaPetWorld LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) find_package(PkgConfig REQUIRED) pkg_check_modules(PUGIXML REQUIRED IMPORTED_TARGET pugixml) pkg_check_modules(RAYLIB REQUIRED IMPORTED_TARGET raylib) set(MANA_CORE_SOURCES src/assets/EntityPreset.cpp src/assets/ItemIconCatalog.cpp src/assets/MinimapAsset.cpp src/assets/MusicAssets.cpp src/assets/SoundAssets.cpp src/assets/SpriteAnimation.cpp src/battle/BattleAssets.cpp src/battle/BattleLayout.cpp src/content/TonoriItems.cpp src/core/ElementSystem.cpp src/core/GameCore.cpp src/core/PetGrowth.cpp src/core/PetSpeciesCatalog.cpp src/dialogue/DialogueEffects.cpp src/dialogue/DialogueScript.cpp src/dialogue/ScriptedInteractable.cpp src/quest/QuestSystem.cpp src/save/SaveGame.cpp src/ui/InteractableVisual.cpp src/ui/InventoryUiModel.cpp src/world/MapAtmosphere.cpp src/world/TmxMap.cpp src/world/TmxMapPool.cpp src/world/TmxWorld.cpp src/world/TmxWorldLayout.cpp src/world/WarpAuditReport.cpp src/world/WarpInteraction.cpp src/world/WildLevelZone.cpp src/world/WildSpawn.cpp ) add_library(mana_core ${MANA_CORE_SOURCES}) target_include_directories(mana_core PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src/assets ${CMAKE_CURRENT_SOURCE_DIR}/src/battle ${CMAKE_CURRENT_SOURCE_DIR}/src/content ${CMAKE_CURRENT_SOURCE_DIR}/src/core ${CMAKE_CURRENT_SOURCE_DIR}/src/dialogue ${CMAKE_CURRENT_SOURCE_DIR}/src/quest ${CMAKE_CURRENT_SOURCE_DIR}/src/save ${CMAKE_CURRENT_SOURCE_DIR}/src/ui ${CMAKE_CURRENT_SOURCE_DIR}/src/world ) target_link_libraries(mana_core PUBLIC PkgConfig::PUGIXML) target_compile_options(mana_core PRIVATE -Wall -Wextra -Wpedantic) add_executable(mana_pet_world src/app/main.cpp src/battle/BattleScene.cpp ) target_link_libraries(mana_pet_world PRIVATE mana_core PkgConfig::RAYLIB) target_compile_options(mana_pet_world PRIVATE -Wall -Wextra -Wpedantic)