macro(add_main_lib TARGET_NAME LIBRARY_TYPE) if(NOT DEFINED MAIN_LIB_DIR) set(MAIN_LIB_DIR "${CMAKE_SOURCE_DIR}/lib") endif() set(lib_SRCS ${MAIN_LIB_DIR}/StdInc.cpp ${MAIN_LIB_DIR}/battle/AccessibilityInfo.cpp ${MAIN_LIB_DIR}/battle/BattleAction.cpp ${MAIN_LIB_DIR}/battle/BattleAttackInfo.cpp ${MAIN_LIB_DIR}/battle/BattleHex.cpp ${MAIN_LIB_DIR}/battle/BattleInfo.cpp ${MAIN_LIB_DIR}/battle/BattleProxy.cpp ${MAIN_LIB_DIR}/battle/BattleStateInfoForRetreat.cpp ${MAIN_LIB_DIR}/battle/CBattleInfoCallback.cpp ${MAIN_LIB_DIR}/battle/CBattleInfoEssentials.cpp ${MAIN_LIB_DIR}/battle/CCallbackBase.cpp ${MAIN_LIB_DIR}/battle/CObstacleInstance.cpp ${MAIN_LIB_DIR}/battle/CPlayerBattleCallback.cpp ${MAIN_LIB_DIR}/battle/CUnitState.cpp ${MAIN_LIB_DIR}/battle/DamageCalculator.cpp ${MAIN_LIB_DIR}/battle/Destination.cpp ${MAIN_LIB_DIR}/battle/IBattleState.cpp ${MAIN_LIB_DIR}/battle/ReachabilityInfo.cpp ${MAIN_LIB_DIR}/battle/SideInBattle.cpp ${MAIN_LIB_DIR}/battle/SiegeInfo.cpp ${MAIN_LIB_DIR}/battle/Unit.cpp ${MAIN_LIB_DIR}/bonuses/Bonus.cpp ${MAIN_LIB_DIR}/bonuses/BonusEnum.cpp ${MAIN_LIB_DIR}/bonuses/BonusList.cpp ${MAIN_LIB_DIR}/bonuses/BonusParams.cpp ${MAIN_LIB_DIR}/bonuses/BonusSelector.cpp ${MAIN_LIB_DIR}/bonuses/CBonusProxy.cpp ${MAIN_LIB_DIR}/bonuses/CBonusSystemNode.cpp ${MAIN_LIB_DIR}/bonuses/IBonusBearer.cpp ${MAIN_LIB_DIR}/bonuses/Limiters.cpp ${MAIN_LIB_DIR}/bonuses/Propagators.cpp ${MAIN_LIB_DIR}/bonuses/Updaters.cpp ${MAIN_LIB_DIR}/campaign/CampaignHandler.cpp ${MAIN_LIB_DIR}/campaign/CampaignState.cpp ${MAIN_LIB_DIR}/events/ApplyDamage.cpp ${MAIN_LIB_DIR}/events/GameResumed.cpp ${MAIN_LIB_DIR}/events/ObjectVisitEnded.cpp ${MAIN_LIB_DIR}/events/ObjectVisitStarted.cpp ${MAIN_LIB_DIR}/events/PlayerGotTurn.cpp ${MAIN_LIB_DIR}/events/TurnStarted.cpp ${MAIN_LIB_DIR}/filesystem/AdapterLoaders.cpp ${MAIN_LIB_DIR}/filesystem/CArchiveLoader.cpp ${MAIN_LIB_DIR}/filesystem/CBinaryReader.cpp ${MAIN_LIB_DIR}/filesystem/CCompressedStream.cpp ${MAIN_LIB_DIR}/filesystem/CFileInputStream.cpp ${MAIN_LIB_DIR}/filesystem/CFilesystemLoader.cpp ${MAIN_LIB_DIR}/filesystem/CMemoryBuffer.cpp ${MAIN_LIB_DIR}/filesystem/CMemoryStream.cpp ${MAIN_LIB_DIR}/filesystem/CZipLoader.cpp ${MAIN_LIB_DIR}/filesystem/CZipSaver.cpp ${MAIN_LIB_DIR}/filesystem/FileInfo.cpp ${MAIN_LIB_DIR}/filesystem/FileStream.cpp ${MAIN_LIB_DIR}/filesystem/Filesystem.cpp ${MAIN_LIB_DIR}/filesystem/MinizipExtensions.cpp ${MAIN_LIB_DIR}/filesystem/ResourceID.cpp ${MAIN_LIB_DIR}/gameState/CGameState.cpp ${MAIN_LIB_DIR}/gameState/CGameStateCampaign.cpp ${MAIN_LIB_DIR}/gameState/InfoAboutArmy.cpp ${MAIN_LIB_DIR}/gameState/TavernHeroesPool.cpp ${MAIN_LIB_DIR}/logging/CBasicLogConfigurator.cpp ${MAIN_LIB_DIR}/logging/CLogger.cpp ${MAIN_LIB_DIR}/mapObjectConstructors/AObjectTypeHandler.cpp ${MAIN_LIB_DIR}/mapObjectConstructors/CBankInstanceConstructor.cpp ${MAIN_LIB_DIR}/mapObjectConstructors/CObjectClassesHandler.cpp ${MAIN_LIB_DIR}/mapObjectConstructors/CommonConstructors.cpp ${MAIN_LIB_DIR}/mapObjectConstructors/CRewardableConstructor.cpp ${MAIN_LIB_DIR}/mapObjectConstructors/DwellingInstanceConstructor.cpp ${MAIN_LIB_DIR}/mapObjectConstructors/HillFortInstanceConstructor.cpp ${MAIN_LIB_DIR}/mapObjectConstructors/ShipyardInstanceConstructor.cpp ${MAIN_LIB_DIR}/mapObjectConstructors/ShrineInstanceConstructor.cpp ${MAIN_LIB_DIR}/mapObjects/CArmedInstance.cpp ${MAIN_LIB_DIR}/mapObjects/CBank.cpp ${MAIN_LIB_DIR}/mapObjects/CGCreature.cpp ${MAIN_LIB_DIR}/mapObjects/CGDwelling.cpp ${MAIN_LIB_DIR}/mapObjects/CGHeroInstance.cpp ${MAIN_LIB_DIR}/mapObjects/CGMarket.cpp ${MAIN_LIB_DIR}/mapObjects/CGObjectInstance.cpp ${MAIN_LIB_DIR}/mapObjects/CGPandoraBox.cpp ${MAIN_LIB_DIR}/mapObjects/CGTownBuilding.cpp ${MAIN_LIB_DIR}/mapObjects/CGTownInstance.cpp ${MAIN_LIB_DIR}/mapObjects/CObjectHandler.cpp ${MAIN_LIB_DIR}/mapObjects/CQuest.cpp ${MAIN_LIB_DIR}/mapObjects/CRewardableObject.cpp ${MAIN_LIB_DIR}/mapObjects/IMarket.cpp ${MAIN_LIB_DIR}/mapObjects/IObjectInterface.cpp ${MAIN_LIB_DIR}/mapObjects/MiscObjects.cpp ${MAIN_LIB_DIR}/mapObjects/ObjectTemplate.cpp ${MAIN_LIB_DIR}/mapping/CDrawRoadsOperation.cpp ${MAIN_LIB_DIR}/mapping/CMap.cpp ${MAIN_LIB_DIR}/mapping/CMapHeader.cpp ${MAIN_LIB_DIR}/mapping/CMapEditManager.cpp ${MAIN_LIB_DIR}/mapping/CMapInfo.cpp ${MAIN_LIB_DIR}/mapping/CMapOperation.cpp ${MAIN_LIB_DIR}/mapping/CMapService.cpp ${MAIN_LIB_DIR}/mapping/MapEditUtils.cpp ${MAIN_LIB_DIR}/mapping/MapIdentifiersH3M.cpp ${MAIN_LIB_DIR}/mapping/MapFeaturesH3M.cpp ${MAIN_LIB_DIR}/mapping/MapFormatH3M.cpp ${MAIN_LIB_DIR}/mapping/MapReaderH3M.cpp ${MAIN_LIB_DIR}/mapping/MapFormatJson.cpp ${MAIN_LIB_DIR}/mapping/ObstacleProxy.cpp ${MAIN_LIB_DIR}/pathfinder/CGPathNode.cpp ${MAIN_LIB_DIR}/pathfinder/CPathfinder.cpp ${MAIN_LIB_DIR}/pathfinder/NodeStorage.cpp ${MAIN_LIB_DIR}/pathfinder/PathfinderOptions.cpp ${MAIN_LIB_DIR}/pathfinder/PathfindingRules.cpp ${MAIN_LIB_DIR}/pathfinder/TurnInfo.cpp ${MAIN_LIB_DIR}/registerTypes/RegisterTypes.cpp ${MAIN_LIB_DIR}/registerTypes/TypesClientPacks1.cpp ${MAIN_LIB_DIR}/registerTypes/TypesClientPacks2.cpp ${MAIN_LIB_DIR}/registerTypes/TypesMapObjects1.cpp ${MAIN_LIB_DIR}/registerTypes/TypesMapObjects2.cpp ${MAIN_LIB_DIR}/registerTypes/TypesMapObjects3.cpp ${MAIN_LIB_DIR}/registerTypes/TypesLobbyPacks.cpp ${MAIN_LIB_DIR}/registerTypes/TypesServerPacks.cpp ${MAIN_LIB_DIR}/rewardable/Configuration.cpp ${MAIN_LIB_DIR}/rewardable/Info.cpp ${MAIN_LIB_DIR}/rewardable/Interface.cpp ${MAIN_LIB_DIR}/rewardable/Limiter.cpp ${MAIN_LIB_DIR}/rewardable/Reward.cpp ${MAIN_LIB_DIR}/rmg/RmgArea.cpp ${MAIN_LIB_DIR}/rmg/RmgObject.cpp ${MAIN_LIB_DIR}/rmg/RmgPath.cpp ${MAIN_LIB_DIR}/rmg/CMapGenerator.cpp ${MAIN_LIB_DIR}/rmg/CMapGenOptions.cpp ${MAIN_LIB_DIR}/rmg/CRmgTemplate.cpp ${MAIN_LIB_DIR}/rmg/CRmgTemplateStorage.cpp ${MAIN_LIB_DIR}/rmg/CZonePlacer.cpp ${MAIN_LIB_DIR}/rmg/TileInfo.cpp ${MAIN_LIB_DIR}/rmg/Zone.cpp ${MAIN_LIB_DIR}/rmg/Functions.cpp ${MAIN_LIB_DIR}/rmg/RmgMap.cpp ${MAIN_LIB_DIR}/rmg/modificators/Modificator.cpp ${MAIN_LIB_DIR}/rmg/modificators/ObjectManager.cpp ${MAIN_LIB_DIR}/rmg/modificators/ObjectDistributor.cpp ${MAIN_LIB_DIR}/rmg/modificators/RoadPlacer.cpp ${MAIN_LIB_DIR}/rmg/modificators/TreasurePlacer.cpp ${MAIN_LIB_DIR}/rmg/modificators/QuestArtifactPlacer.cpp ${MAIN_LIB_DIR}/rmg/modificators/ConnectionsPlacer.cpp ${MAIN_LIB_DIR}/rmg/modificators/WaterAdopter.cpp ${MAIN_LIB_DIR}/rmg/modificators/MinePlacer.cpp ${MAIN_LIB_DIR}/rmg/modificators/TownPlacer.cpp ${MAIN_LIB_DIR}/rmg/modificators/WaterProxy.cpp ${MAIN_LIB_DIR}/rmg/modificators/WaterRoutes.cpp ${MAIN_LIB_DIR}/rmg/modificators/RockPlacer.cpp ${MAIN_LIB_DIR}/rmg/modificators/RockFiller.cpp ${MAIN_LIB_DIR}/rmg/modificators/ObstaclePlacer.cpp ${MAIN_LIB_DIR}/rmg/modificators/RiverPlacer.cpp ${MAIN_LIB_DIR}/rmg/modificators/TerrainPainter.cpp ${MAIN_LIB_DIR}/rmg/threadpool/MapProxy.cpp ${MAIN_LIB_DIR}/serializer/BinaryDeserializer.cpp ${MAIN_LIB_DIR}/serializer/BinarySerializer.cpp ${MAIN_LIB_DIR}/serializer/CLoadIntegrityValidator.cpp ${MAIN_LIB_DIR}/serializer/CMemorySerializer.cpp ${MAIN_LIB_DIR}/serializer/Connection.cpp ${MAIN_LIB_DIR}/serializer/CSerializer.cpp ${MAIN_LIB_DIR}/serializer/CTypeList.cpp ${MAIN_LIB_DIR}/serializer/JsonDeserializer.cpp ${MAIN_LIB_DIR}/serializer/JsonSerializeFormat.cpp ${MAIN_LIB_DIR}/serializer/JsonSerializer.cpp ${MAIN_LIB_DIR}/serializer/JsonUpdater.cpp ${MAIN_LIB_DIR}/serializer/ILICReader.cpp ${MAIN_LIB_DIR}/spells/AbilityCaster.cpp ${MAIN_LIB_DIR}/spells/AdventureSpellMechanics.cpp ${MAIN_LIB_DIR}/spells/BattleSpellMechanics.cpp ${MAIN_LIB_DIR}/spells/BonusCaster.cpp ${MAIN_LIB_DIR}/spells/CSpellHandler.cpp ${MAIN_LIB_DIR}/spells/ExternalCaster.cpp ${MAIN_LIB_DIR}/spells/ISpellMechanics.cpp ${MAIN_LIB_DIR}/spells/ObstacleCasterProxy.cpp ${MAIN_LIB_DIR}/spells/Problem.cpp ${MAIN_LIB_DIR}/spells/ProxyCaster.cpp ${MAIN_LIB_DIR}/spells/TargetCondition.cpp ${MAIN_LIB_DIR}/spells/ViewSpellInt.cpp ${MAIN_LIB_DIR}/spells/effects/Catapult.cpp ${MAIN_LIB_DIR}/spells/effects/Clone.cpp ${MAIN_LIB_DIR}/spells/effects/Damage.cpp ${MAIN_LIB_DIR}/spells/effects/DemonSummon.cpp ${MAIN_LIB_DIR}/spells/effects/Dispel.cpp ${MAIN_LIB_DIR}/spells/effects/Effect.cpp ${MAIN_LIB_DIR}/spells/effects/Effects.cpp ${MAIN_LIB_DIR}/spells/effects/Heal.cpp ${MAIN_LIB_DIR}/spells/effects/LocationEffect.cpp ${MAIN_LIB_DIR}/spells/effects/Moat.cpp ${MAIN_LIB_DIR}/spells/effects/Obstacle.cpp ${MAIN_LIB_DIR}/spells/effects/Registry.cpp ${MAIN_LIB_DIR}/spells/effects/UnitEffect.cpp ${MAIN_LIB_DIR}/spells/effects/Summon.cpp ${MAIN_LIB_DIR}/spells/effects/Teleport.cpp ${MAIN_LIB_DIR}/spells/effects/Timed.cpp ${MAIN_LIB_DIR}/spells/effects/RemoveObstacle.cpp ${MAIN_LIB_DIR}/spells/effects/Sacrifice.cpp ${MAIN_LIB_DIR}/vstd/StringUtils.cpp ${MAIN_LIB_DIR}/ArtifactUtils.cpp ${MAIN_LIB_DIR}/BasicTypes.cpp ${MAIN_LIB_DIR}/BattleFieldHandler.cpp ${MAIN_LIB_DIR}/CAndroidVMHelper.cpp ${MAIN_LIB_DIR}/CArtHandler.cpp ${MAIN_LIB_DIR}/CArtifactInstance.cpp ${MAIN_LIB_DIR}/CBonusTypeHandler.cpp ${MAIN_LIB_DIR}/CBuildingHandler.cpp ${MAIN_LIB_DIR}/CConfigHandler.cpp ${MAIN_LIB_DIR}/CConsoleHandler.cpp ${MAIN_LIB_DIR}/CCreatureHandler.cpp ${MAIN_LIB_DIR}/CCreatureSet.cpp ${MAIN_LIB_DIR}/CGameInfoCallback.cpp ${MAIN_LIB_DIR}/CGameInterface.cpp ${MAIN_LIB_DIR}/CGeneralTextHandler.cpp ${MAIN_LIB_DIR}/CHeroHandler.cpp ${MAIN_LIB_DIR}/CModHandler.cpp ${MAIN_LIB_DIR}/CModVersion.cpp ${MAIN_LIB_DIR}/CPlayerState.cpp ${MAIN_LIB_DIR}/CRandomGenerator.cpp ${MAIN_LIB_DIR}/CScriptingModule.cpp ${MAIN_LIB_DIR}/CSkillHandler.cpp ${MAIN_LIB_DIR}/CStack.cpp ${MAIN_LIB_DIR}/CThreadHelper.cpp ${MAIN_LIB_DIR}/CTownHandler.cpp ${MAIN_LIB_DIR}/GameConstants.cpp ${MAIN_LIB_DIR}/GameSettings.cpp ${MAIN_LIB_DIR}/IGameCallback.cpp ${MAIN_LIB_DIR}/IHandlerBase.cpp ${MAIN_LIB_DIR}/JsonDetail.cpp ${MAIN_LIB_DIR}/JsonNode.cpp ${MAIN_LIB_DIR}/JsonRandom.cpp ${MAIN_LIB_DIR}/LoadProgress.cpp ${MAIN_LIB_DIR}/LogicalExpression.cpp ${MAIN_LIB_DIR}/NetPacksLib.cpp ${MAIN_LIB_DIR}/MetaString.cpp ${MAIN_LIB_DIR}/ObstacleHandler.cpp ${MAIN_LIB_DIR}/StartInfo.cpp ${MAIN_LIB_DIR}/ResourceSet.cpp ${MAIN_LIB_DIR}/RiverHandler.cpp ${MAIN_LIB_DIR}/RoadHandler.cpp ${MAIN_LIB_DIR}/ScriptHandler.cpp ${MAIN_LIB_DIR}/TerrainHandler.cpp ${MAIN_LIB_DIR}/TextOperations.cpp ${MAIN_LIB_DIR}/VCMIDirs.cpp ${MAIN_LIB_DIR}/VCMI_Lib.cpp ) # Version.cpp is a generated file if(ENABLE_GITVERSION) list(APPEND lib_SRCS ${CMAKE_BINARY_DIR}/Version.cpp) set_source_files_properties(${CMAKE_BINARY_DIR}/Version.cpp PROPERTIES GENERATED TRUE ) endif() set(lib_HEADERS ${MAIN_LIB_DIR}/../include/vstd/CLoggerBase.h ${MAIN_LIB_DIR}/../Global.h ${MAIN_LIB_DIR}/StdInc.h ${MAIN_LIB_DIR}/../include/vstd/ContainerUtils.h ${MAIN_LIB_DIR}/../include/vstd/RNG.h ${MAIN_LIB_DIR}/../include/vstd/StringUtils.h ${MAIN_LIB_DIR}/../include/vcmi/events/AdventureEvents.h ${MAIN_LIB_DIR}/../include/vcmi/events/ApplyDamage.h ${MAIN_LIB_DIR}/../include/vcmi/events/BattleEvents.h ${MAIN_LIB_DIR}/../include/vcmi/events/Event.h ${MAIN_LIB_DIR}/../include/vcmi/events/EventBus.h ${MAIN_LIB_DIR}/../include/vcmi/events/GameResumed.h ${MAIN_LIB_DIR}/../include/vcmi/events/GenericEvents.h ${MAIN_LIB_DIR}/../include/vcmi/events/ObjectVisitEnded.h ${MAIN_LIB_DIR}/../include/vcmi/events/ObjectVisitStarted.h ${MAIN_LIB_DIR}/../include/vcmi/events/PlayerGotTurn.h ${MAIN_LIB_DIR}/../include/vcmi/events/SubscriptionRegistry.h ${MAIN_LIB_DIR}/../include/vcmi/events/TurnStarted.h ${MAIN_LIB_DIR}/../include/vcmi/scripting/Service.h ${MAIN_LIB_DIR}/../include/vcmi/spells/Caster.h ${MAIN_LIB_DIR}/../include/vcmi/spells/Magic.h ${MAIN_LIB_DIR}/../include/vcmi/spells/Service.h ${MAIN_LIB_DIR}/../include/vcmi/spells/Spell.h ${MAIN_LIB_DIR}/../include/vcmi/Artifact.h ${MAIN_LIB_DIR}/../include/vcmi/ArtifactService.h ${MAIN_LIB_DIR}/../include/vcmi/Creature.h ${MAIN_LIB_DIR}/../include/vcmi/CreatureService.h ${MAIN_LIB_DIR}/../include/vcmi/Entity.h ${MAIN_LIB_DIR}/../include/vcmi/Environment.h ${MAIN_LIB_DIR}/../include/vcmi/Faction.h ${MAIN_LIB_DIR}/../include/vcmi/FactionService.h ${MAIN_LIB_DIR}/../include/vcmi/HeroClass.h ${MAIN_LIB_DIR}/../include/vcmi/HeroClassService.h ${MAIN_LIB_DIR}/../include/vcmi/HeroType.h ${MAIN_LIB_DIR}/../include/vcmi/HeroTypeService.h ${MAIN_LIB_DIR}/../include/vcmi/Metatype.h ${MAIN_LIB_DIR}/../include/vcmi/Player.h ${MAIN_LIB_DIR}/../include/vcmi/ServerCallback.h ${MAIN_LIB_DIR}/../include/vcmi/Services.h ${MAIN_LIB_DIR}/../include/vcmi/Skill.h ${MAIN_LIB_DIR}/../include/vcmi/SkillService.h ${MAIN_LIB_DIR}/../include/vcmi/Team.h ${MAIN_LIB_DIR}/battle/AccessibilityInfo.h ${MAIN_LIB_DIR}/battle/BattleAction.h ${MAIN_LIB_DIR}/battle/BattleAttackInfo.h ${MAIN_LIB_DIR}/battle/BattleHex.h ${MAIN_LIB_DIR}/battle/BattleInfo.h ${MAIN_LIB_DIR}/battle/BattleStateInfoForRetreat.h ${MAIN_LIB_DIR}/battle/BattleProxy.h ${MAIN_LIB_DIR}/battle/CBattleInfoCallback.h ${MAIN_LIB_DIR}/battle/CBattleInfoEssentials.h ${MAIN_LIB_DIR}/battle/CCallbackBase.h ${MAIN_LIB_DIR}/battle/CObstacleInstance.h ${MAIN_LIB_DIR}/battle/CPlayerBattleCallback.h ${MAIN_LIB_DIR}/battle/CUnitState.h ${MAIN_LIB_DIR}/battle/DamageCalculator.h ${MAIN_LIB_DIR}/battle/Destination.h ${MAIN_LIB_DIR}/battle/IBattleInfoCallback.h ${MAIN_LIB_DIR}/battle/IBattleState.h ${MAIN_LIB_DIR}/battle/IUnitInfo.h ${MAIN_LIB_DIR}/battle/PossiblePlayerBattleAction.h ${MAIN_LIB_DIR}/battle/ReachabilityInfo.h ${MAIN_LIB_DIR}/battle/SideInBattle.h ${MAIN_LIB_DIR}/battle/SiegeInfo.h ${MAIN_LIB_DIR}/battle/Unit.h ${MAIN_LIB_DIR}/bonuses/Bonus.h ${MAIN_LIB_DIR}/bonuses/BonusEnum.h ${MAIN_LIB_DIR}/bonuses/BonusList.h ${MAIN_LIB_DIR}/bonuses/BonusParams.h ${MAIN_LIB_DIR}/bonuses/BonusSelector.h ${MAIN_LIB_DIR}/bonuses/CBonusProxy.h ${MAIN_LIB_DIR}/bonuses/CBonusSystemNode.h ${MAIN_LIB_DIR}/bonuses/IBonusBearer.h ${MAIN_LIB_DIR}/bonuses/Limiters.h ${MAIN_LIB_DIR}/bonuses/Propagators.h ${MAIN_LIB_DIR}/bonuses/Updaters.h ${MAIN_LIB_DIR}/campaign/CampaignConstants.h ${MAIN_LIB_DIR}/campaign/CampaignHandler.h ${MAIN_LIB_DIR}/campaign/CampaignScenarioPrologEpilog.h ${MAIN_LIB_DIR}/campaign/CampaignState.h ${MAIN_LIB_DIR}/events/ApplyDamage.h ${MAIN_LIB_DIR}/events/GameResumed.h ${MAIN_LIB_DIR}/events/ObjectVisitEnded.h ${MAIN_LIB_DIR}/events/ObjectVisitStarted.h ${MAIN_LIB_DIR}/events/PlayerGotTurn.h ${MAIN_LIB_DIR}/events/TurnStarted.h ${MAIN_LIB_DIR}/filesystem/AdapterLoaders.h ${MAIN_LIB_DIR}/filesystem/CArchiveLoader.h ${MAIN_LIB_DIR}/filesystem/CBinaryReader.h ${MAIN_LIB_DIR}/filesystem/CCompressedStream.h ${MAIN_LIB_DIR}/filesystem/CFileInputStream.h ${MAIN_LIB_DIR}/filesystem/CFilesystemLoader.h ${MAIN_LIB_DIR}/filesystem/CInputOutputStream.h ${MAIN_LIB_DIR}/filesystem/CInputStream.h ${MAIN_LIB_DIR}/filesystem/CMemoryBuffer.h ${MAIN_LIB_DIR}/filesystem/CMemoryStream.h ${MAIN_LIB_DIR}/filesystem/COutputStream.h ${MAIN_LIB_DIR}/filesystem/CStream.h ${MAIN_LIB_DIR}/filesystem/CZipLoader.h ${MAIN_LIB_DIR}/filesystem/CZipSaver.h ${MAIN_LIB_DIR}/filesystem/FileInfo.h ${MAIN_LIB_DIR}/filesystem/FileStream.h ${MAIN_LIB_DIR}/filesystem/Filesystem.h ${MAIN_LIB_DIR}/filesystem/ISimpleResourceLoader.h ${MAIN_LIB_DIR}/filesystem/MinizipExtensions.h ${MAIN_LIB_DIR}/filesystem/ResourceID.h ${MAIN_LIB_DIR}/gameState/CGameState.h ${MAIN_LIB_DIR}/gameState/CGameStateCampaign.h ${MAIN_LIB_DIR}/gameState/EVictoryLossCheckResult.h ${MAIN_LIB_DIR}/gameState/InfoAboutArmy.h ${MAIN_LIB_DIR}/gameState/SThievesGuildInfo.h ${MAIN_LIB_DIR}/gameState/TavernHeroesPool.h ${MAIN_LIB_DIR}/gameState/TavernSlot.h ${MAIN_LIB_DIR}/gameState/QuestInfo.h ${MAIN_LIB_DIR}/logging/CBasicLogConfigurator.h ${MAIN_LIB_DIR}/logging/CLogger.h ${MAIN_LIB_DIR}/mapObjectConstructors/AObjectTypeHandler.h ${MAIN_LIB_DIR}/mapObjectConstructors/CBankInstanceConstructor.h ${MAIN_LIB_DIR}/mapObjectConstructors/CDefaultObjectTypeHandler.h ${MAIN_LIB_DIR}/mapObjectConstructors/CObjectClassesHandler.h ${MAIN_LIB_DIR}/mapObjectConstructors/CommonConstructors.h ${MAIN_LIB_DIR}/mapObjectConstructors/CRewardableConstructor.h ${MAIN_LIB_DIR}/mapObjectConstructors/DwellingInstanceConstructor.h ${MAIN_LIB_DIR}/mapObjectConstructors/HillFortInstanceConstructor.h ${MAIN_LIB_DIR}/mapObjectConstructors/IObjectInfo.h ${MAIN_LIB_DIR}/mapObjectConstructors/RandomMapInfo.h ${MAIN_LIB_DIR}/mapObjectConstructors/ShipyardInstanceConstructor.h ${MAIN_LIB_DIR}/mapObjectConstructors/ShrineInstanceConstructor.h ${MAIN_LIB_DIR}/mapObjectConstructors/SObjectSounds.h ${MAIN_LIB_DIR}/mapObjects/CArmedInstance.h ${MAIN_LIB_DIR}/mapObjects/CBank.h ${MAIN_LIB_DIR}/mapObjects/CGCreature.h ${MAIN_LIB_DIR}/mapObjects/CGDwelling.h ${MAIN_LIB_DIR}/mapObjects/CGHeroInstance.h ${MAIN_LIB_DIR}/mapObjects/CGMarket.h ${MAIN_LIB_DIR}/mapObjects/CGObjectInstance.h ${MAIN_LIB_DIR}/mapObjects/CGPandoraBox.h ${MAIN_LIB_DIR}/mapObjects/CGTownBuilding.h ${MAIN_LIB_DIR}/mapObjects/CGTownInstance.h ${MAIN_LIB_DIR}/mapObjects/CObjectHandler.h ${MAIN_LIB_DIR}/mapObjects/CQuest.h ${MAIN_LIB_DIR}/mapObjects/CRewardableObject.h ${MAIN_LIB_DIR}/mapObjects/IMarket.h ${MAIN_LIB_DIR}/mapObjects/IObjectInterface.h ${MAIN_LIB_DIR}/mapObjects/MapObjects.h ${MAIN_LIB_DIR}/mapObjects/MiscObjects.h ${MAIN_LIB_DIR}/mapObjects/ObjectTemplate.h ${MAIN_LIB_DIR}/mapping/CDrawRoadsOperation.h ${MAIN_LIB_DIR}/mapping/CMapDefines.h ${MAIN_LIB_DIR}/mapping/CMapEditManager.h ${MAIN_LIB_DIR}/mapping/CMapHeader.h ${MAIN_LIB_DIR}/mapping/CMap.h ${MAIN_LIB_DIR}/mapping/CMapInfo.h ${MAIN_LIB_DIR}/mapping/CMapOperation.h ${MAIN_LIB_DIR}/mapping/CMapService.h ${MAIN_LIB_DIR}/mapping/MapEditUtils.h ${MAIN_LIB_DIR}/mapping/MapIdentifiersH3M.h ${MAIN_LIB_DIR}/mapping/MapFeaturesH3M.h ${MAIN_LIB_DIR}/mapping/MapFormatH3M.h ${MAIN_LIB_DIR}/mapping/MapFormat.h ${MAIN_LIB_DIR}/mapping/MapReaderH3M.h ${MAIN_LIB_DIR}/mapping/MapFormatJson.h ${MAIN_LIB_DIR}/mapping/ObstacleProxy.h ${MAIN_LIB_DIR}/pathfinder/INodeStorage.h ${MAIN_LIB_DIR}/pathfinder/CGPathNode.h ${MAIN_LIB_DIR}/pathfinder/CPathfinder.h ${MAIN_LIB_DIR}/pathfinder/NodeStorage.h ${MAIN_LIB_DIR}/pathfinder/PathfinderOptions.h ${MAIN_LIB_DIR}/pathfinder/PathfinderUtil.h ${MAIN_LIB_DIR}/pathfinder/PathfindingRules.h ${MAIN_LIB_DIR}/pathfinder/TurnInfo.h ${MAIN_LIB_DIR}/registerTypes/RegisterTypes.h ${MAIN_LIB_DIR}/rewardable/Configuration.h ${MAIN_LIB_DIR}/rewardable/Info.h ${MAIN_LIB_DIR}/rewardable/Interface.h ${MAIN_LIB_DIR}/rewardable/Limiter.h ${MAIN_LIB_DIR}/rewardable/Reward.h ${MAIN_LIB_DIR}/rmg/RmgArea.h ${MAIN_LIB_DIR}/rmg/RmgObject.h ${MAIN_LIB_DIR}/rmg/RmgPath.h ${MAIN_LIB_DIR}/rmg/CMapGenerator.h ${MAIN_LIB_DIR}/rmg/CMapGenOptions.h ${MAIN_LIB_DIR}/rmg/CRmgTemplate.h ${MAIN_LIB_DIR}/rmg/CRmgTemplateStorage.h ${MAIN_LIB_DIR}/rmg/CZonePlacer.h ${MAIN_LIB_DIR}/rmg/TileInfo.h ${MAIN_LIB_DIR}/rmg/Zone.h ${MAIN_LIB_DIR}/rmg/RmgMap.h ${MAIN_LIB_DIR}/rmg/float3.h ${MAIN_LIB_DIR}/rmg/Functions.h ${MAIN_LIB_DIR}/rmg/modificators/Modificator.h ${MAIN_LIB_DIR}/rmg/modificators/ObjectManager.h ${MAIN_LIB_DIR}/rmg/modificators/ObjectDistributor.h ${MAIN_LIB_DIR}/rmg/modificators/RoadPlacer.h ${MAIN_LIB_DIR}/rmg/modificators/TreasurePlacer.h ${MAIN_LIB_DIR}/rmg/modificators/QuestArtifactPlacer.h ${MAIN_LIB_DIR}/rmg/modificators/ConnectionsPlacer.h ${MAIN_LIB_DIR}/rmg/modificators/WaterAdopter.h ${MAIN_LIB_DIR}/rmg/modificators/MinePlacer.h ${MAIN_LIB_DIR}/rmg/modificators/TownPlacer.h ${MAIN_LIB_DIR}/rmg/modificators/WaterProxy.h ${MAIN_LIB_DIR}/rmg/modificators/WaterRoutes.h ${MAIN_LIB_DIR}/rmg/modificators/RockPlacer.h ${MAIN_LIB_DIR}/rmg/modificators/RockFiller.h ${MAIN_LIB_DIR}/rmg/modificators/ObstaclePlacer.h ${MAIN_LIB_DIR}/rmg/modificators/RiverPlacer.h ${MAIN_LIB_DIR}/rmg/modificators/TerrainPainter.h ${MAIN_LIB_DIR}/rmg/threadpool/BlockingQueue.h ${MAIN_LIB_DIR}/rmg/threadpool/ThreadPool.h ${MAIN_LIB_DIR}/rmg/threadpool/MapProxy.h ${MAIN_LIB_DIR}/serializer/BinaryDeserializer.h ${MAIN_LIB_DIR}/serializer/BinarySerializer.h ${MAIN_LIB_DIR}/serializer/CLoadIntegrityValidator.h ${MAIN_LIB_DIR}/serializer/CMemorySerializer.h ${MAIN_LIB_DIR}/serializer/Connection.h ${MAIN_LIB_DIR}/serializer/CSerializer.h ${MAIN_LIB_DIR}/serializer/CTypeList.h ${MAIN_LIB_DIR}/serializer/JsonDeserializer.h ${MAIN_LIB_DIR}/serializer/JsonSerializeFormat.h ${MAIN_LIB_DIR}/serializer/JsonSerializer.h ${MAIN_LIB_DIR}/serializer/JsonUpdater.h ${MAIN_LIB_DIR}/serializer/ILICReader.h ${MAIN_LIB_DIR}/serializer/Cast.h ${MAIN_LIB_DIR}/spells/AbilityCaster.h ${MAIN_LIB_DIR}/spells/AdventureSpellMechanics.h ${MAIN_LIB_DIR}/spells/BattleSpellMechanics.h ${MAIN_LIB_DIR}/spells/BonusCaster.h ${MAIN_LIB_DIR}/spells/CSpellHandler.h ${MAIN_LIB_DIR}/spells/ExternalCaster.h ${MAIN_LIB_DIR}/spells/ISpellMechanics.h ${MAIN_LIB_DIR}/spells/ObstacleCasterProxy.h ${MAIN_LIB_DIR}/spells/Problem.h ${MAIN_LIB_DIR}/spells/ProxyCaster.h ${MAIN_LIB_DIR}/spells/TargetCondition.h ${MAIN_LIB_DIR}/spells/ViewSpellInt.h ${MAIN_LIB_DIR}/spells/effects/Catapult.h ${MAIN_LIB_DIR}/spells/effects/Clone.h ${MAIN_LIB_DIR}/spells/effects/Damage.h ${MAIN_LIB_DIR}/spells/effects/DemonSummon.h ${MAIN_LIB_DIR}/spells/effects/Dispel.h ${MAIN_LIB_DIR}/spells/effects/Effect.h ${MAIN_LIB_DIR}/spells/effects/Effects.h ${MAIN_LIB_DIR}/spells/effects/EffectsFwd.h ${MAIN_LIB_DIR}/spells/effects/Heal.h ${MAIN_LIB_DIR}/spells/effects/LocationEffect.h ${MAIN_LIB_DIR}/spells/effects/Obstacle.h ${MAIN_LIB_DIR}/spells/effects/Registry.h ${MAIN_LIB_DIR}/spells/effects/UnitEffect.h ${MAIN_LIB_DIR}/spells/effects/Summon.h ${MAIN_LIB_DIR}/spells/effects/Teleport.h ${MAIN_LIB_DIR}/spells/effects/Timed.h ${MAIN_LIB_DIR}/spells/effects/RemoveObstacle.h ${MAIN_LIB_DIR}/spells/effects/Sacrifice.h ${MAIN_LIB_DIR}/AI_Base.h ${MAIN_LIB_DIR}/ArtifactUtils.h ${MAIN_LIB_DIR}/BattleFieldHandler.h ${MAIN_LIB_DIR}/CAndroidVMHelper.h ${MAIN_LIB_DIR}/CArtHandler.h ${MAIN_LIB_DIR}/CArtifactInstance.h ${MAIN_LIB_DIR}/CBonusTypeHandler.h ${MAIN_LIB_DIR}/CBuildingHandler.h ${MAIN_LIB_DIR}/CConfigHandler.h ${MAIN_LIB_DIR}/CConsoleHandler.h ${MAIN_LIB_DIR}/CCreatureHandler.h ${MAIN_LIB_DIR}/CCreatureSet.h ${MAIN_LIB_DIR}/CGameInfoCallback.h ${MAIN_LIB_DIR}/CGameInterface.h ${MAIN_LIB_DIR}/CGeneralTextHandler.h ${MAIN_LIB_DIR}/CHeroHandler.h ${MAIN_LIB_DIR}/CModHandler.h ${MAIN_LIB_DIR}/CModVersion.h ${MAIN_LIB_DIR}/CondSh.h ${MAIN_LIB_DIR}/ConstTransitivePtr.h ${MAIN_LIB_DIR}/Color.h ${MAIN_LIB_DIR}/CPlayerState.h ${MAIN_LIB_DIR}/CRandomGenerator.h ${MAIN_LIB_DIR}/CScriptingModule.h ${MAIN_LIB_DIR}/CSkillHandler.h ${MAIN_LIB_DIR}/CSoundBase.h ${MAIN_LIB_DIR}/CStack.h ${MAIN_LIB_DIR}/CStopWatch.h ${MAIN_LIB_DIR}/CThreadHelper.h ${MAIN_LIB_DIR}/CTownHandler.h ${MAIN_LIB_DIR}/FunctionList.h ${MAIN_LIB_DIR}/GameConstants.h ${MAIN_LIB_DIR}/GameSettings.h ${MAIN_LIB_DIR}/IBonusTypeHandler.h ${MAIN_LIB_DIR}/IGameCallback.h ${MAIN_LIB_DIR}/IGameEventsReceiver.h ${MAIN_LIB_DIR}/IHandlerBase.h ${MAIN_LIB_DIR}/int3.h ${MAIN_LIB_DIR}/Interprocess.h ${MAIN_LIB_DIR}/JsonDetail.h ${MAIN_LIB_DIR}/JsonNode.h ${MAIN_LIB_DIR}/JsonRandom.h ${MAIN_LIB_DIR}/Languages.h ${MAIN_LIB_DIR}/LoadProgress.h ${MAIN_LIB_DIR}/LogicalExpression.h ${MAIN_LIB_DIR}/MetaString.h ${MAIN_LIB_DIR}/NetPacksBase.h ${MAIN_LIB_DIR}/NetPacks.h ${MAIN_LIB_DIR}/NetPacksLobby.h ${MAIN_LIB_DIR}/NetPackVisitor.h ${MAIN_LIB_DIR}/ObstacleHandler.h ${MAIN_LIB_DIR}/Point.h ${MAIN_LIB_DIR}/Rect.h ${MAIN_LIB_DIR}/Rect.cpp ${MAIN_LIB_DIR}/ResourceSet.h ${MAIN_LIB_DIR}/RiverHandler.h ${MAIN_LIB_DIR}/RoadHandler.h ${MAIN_LIB_DIR}/ScriptHandler.h ${MAIN_LIB_DIR}/ScopeGuard.h ${MAIN_LIB_DIR}/StartInfo.h ${MAIN_LIB_DIR}/StringConstants.h ${MAIN_LIB_DIR}/TerrainHandler.h ${MAIN_LIB_DIR}/TextOperations.h ${MAIN_LIB_DIR}/UnlockGuard.h ${MAIN_LIB_DIR}/VCMIDirs.h ${MAIN_LIB_DIR}/vcmi_endian.h ${MAIN_LIB_DIR}/VCMI_Lib.h ) assign_source_group(${lib_SRCS} ${lib_HEADERS}) add_library(${TARGET_NAME} ${LIBRARY_TYPE} ${lib_SRCS} ${lib_HEADERS}) set_target_properties(${TARGET_NAME} PROPERTIES COMPILE_DEFINITIONS "VCMI_DLL=1") target_link_libraries(${TARGET_NAME} PUBLIC minizip::minizip ZLIB::ZLIB ${SYSTEM_LIBS} Boost::boost Boost::thread Boost::filesystem Boost::program_options Boost::locale Boost::date_time ) if(APPLE_IOS) target_link_libraries(${TARGET_NAME} PUBLIC iOS_utils) endif() target_include_directories(${TARGET_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} PUBLIC ${MAIN_LIB_DIR}/.. PUBLIC ${MAIN_LIB_DIR}/../include PUBLIC ${MAIN_LIB_DIR} ) if(WIN32) set_target_properties(${TARGET_NAME} PROPERTIES OUTPUT_NAME "VCMI_lib" PROJECT_LABEL "VCMI_lib" ) endif() vcmi_set_output_dir(${TARGET_NAME} "") enable_pch(${TARGET_NAME}) # We want to deploy assets into build directory for easier debugging without install if(COPY_CONFIG_ON_BUILD) add_custom_command(TARGET ${TARGET_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/config COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/Mods COMMAND ${CMAKE_COMMAND} -E copy_directory ${MAIN_LIB_DIR}/../config ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/config COMMAND ${CMAKE_COMMAND} -E copy_directory ${MAIN_LIB_DIR}/../Mods ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/Mods ) endif() # Update version before vcmi compiling if(TARGET update_version) add_dependencies(${TARGET_NAME} update_version) endif() if("${LIBRARY_TYPE}" STREQUAL SHARED) install(TARGETS ${TARGET_NAME} RUNTIME DESTINATION ${LIB_DIR} LIBRARY DESTINATION ${LIB_DIR}) endif() if(APPLE_IOS AND NOT USING_CONAN) get_target_property(LINKED_LIBS ${TARGET_NAME} LINK_LIBRARIES) foreach(LINKED_LIB IN LISTS LINKED_LIBS) if(NOT TARGET ${LINKED_LIB}) if(LINKED_LIB MATCHES "\\${CMAKE_SHARED_LIBRARY_SUFFIX}$") install(FILES ${LINKED_LIB} DESTINATION ${LIB_DIR}) endif() continue() endif() get_target_property(LIB_TYPE ${LINKED_LIB} TYPE) if(NOT LIB_TYPE STREQUAL "SHARED_LIBRARY") continue() endif() get_target_property(_aliased ${LINKED_LIB} ALIASED_TARGET) if(_aliased) set(LINKED_LIB_REAL ${_aliased}) else() set(LINKED_LIB_REAL ${LINKED_LIB}) endif() get_target_property(_imported ${LINKED_LIB_REAL} IMPORTED) if(_imported) set(INSTALL_TYPE IMPORTED_RUNTIME_ARTIFACTS) get_target_property(BOOST_DEPENDENCIES ${LINKED_LIB_REAL} INTERFACE_LINK_LIBRARIES) foreach(BOOST_DEPENDENCY IN LISTS BOOST_DEPENDENCIES) get_target_property(BOOST_DEPENDENCY_TYPE ${BOOST_DEPENDENCY} TYPE) if(BOOST_DEPENDENCY_TYPE STREQUAL "SHARED_LIBRARY") install(IMPORTED_RUNTIME_ARTIFACTS ${BOOST_DEPENDENCY} LIBRARY DESTINATION ${LIB_DIR}) endif() endforeach() else() set(INSTALL_TYPE TARGETS) endif() install(${INSTALL_TYPE} ${LINKED_LIB_REAL} LIBRARY DESTINATION ${LIB_DIR}) endforeach() endif() endmacro()