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/LogicalViewport.cpp src/app/TitleMenu.cpp 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) set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT mana_pet_world) set_target_properties(mana_pet_world PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" VS_DEBUGGER_COMMAND_ARGUMENTS "${CMAKE_CURRENT_SOURCE_DIR}" ) enable_testing() if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tests/app/LogicalViewportTest.cpp") add_executable(logical_viewport_test tests/app/LogicalViewportTest.cpp src/app/LogicalViewport.cpp ) target_include_directories(logical_viewport_test PRIVATE src/app) target_compile_options(logical_viewport_test PRIVATE -Wall -Wextra -Wpedantic) add_test(NAME logical_viewport_test COMMAND logical_viewport_test) endif() if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tests/app/TitleMenuTest.cpp") add_executable(title_menu_test tests/app/TitleMenuTest.cpp src/app/TitleMenu.cpp ) target_include_directories(title_menu_test PRIVATE src/app) target_compile_options(title_menu_test PRIVATE -Wall -Wextra -Wpedantic) add_test(NAME title_menu_test COMMAND title_menu_test) endif() if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tests/app/BattleEncounterTest.cpp") add_executable(battle_encounter_test tests/app/BattleEncounterTest.cpp src/app/LogicalViewport.cpp src/app/TitleMenu.cpp src/battle/BattleScene.cpp ) target_include_directories(battle_encounter_test PRIVATE src/app) target_link_libraries(battle_encounter_test PRIVATE mana_core PkgConfig::RAYLIB) target_compile_options(battle_encounter_test PRIVATE -Wall -Wextra -Wpedantic) add_test(NAME battle_encounter_test COMMAND battle_encounter_test) endif() if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tests/core/CapturePetTest.cpp") add_executable(capture_pet_test tests/core/CapturePetTest.cpp ) target_link_libraries(capture_pet_test PRIVATE mana_core) target_compile_options(capture_pet_test PRIVATE -Wall -Wextra -Wpedantic) add_test(NAME capture_pet_test COMMAND capture_pet_test) endif() if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tests/core/TeamPetRulesTest.cpp") add_executable(team_pet_rules_test tests/core/TeamPetRulesTest.cpp ) target_link_libraries(team_pet_rules_test PRIVATE mana_core) target_compile_options(team_pet_rules_test PRIVATE -Wall -Wextra -Wpedantic) add_test(NAME team_pet_rules_test COMMAND team_pet_rules_test) endif()