Files
Loke/CMakeLists.txt
T

128 lines
4.5 KiB
CMake

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()