diff --git a/cmake_modules/VCMI_lib.cmake b/cmake_modules/VCMI_lib.cmake index 62da10ae9..09a28fbbd 100644 --- a/cmake_modules/VCMI_lib.cmake +++ b/cmake_modules/VCMI_lib.cmake @@ -1,515 +1,522 @@ -set(lib_SRCS - StdInc.cpp +macro(add_main_lib TARGET_NAME LIBRARY_TYPE) + set(MAIN_LIB_DIR "${CMAKE_SOURCE_DIR}/lib") + set(lib_SRCS + ${MAIN_LIB_DIR}/StdInc.cpp ${CMAKE_BINARY_DIR}/Version.cpp - battle/AccessibilityInfo.cpp - battle/BattleAction.cpp - battle/BattleAttackInfo.cpp - battle/BattleHex.cpp - battle/BattleInfo.cpp - battle/BattleProxy.cpp - battle/CBattleInfoCallback.cpp - battle/CBattleInfoEssentials.cpp - battle/CCallbackBase.cpp - battle/CObstacleInstance.cpp - battle/CPlayerBattleCallback.cpp - battle/CUnitState.cpp - battle/Destination.cpp - battle/IBattleState.cpp - battle/ReachabilityInfo.cpp - battle/SideInBattle.cpp - battle/SiegeInfo.cpp - battle/Unit.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/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/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 - events/ApplyDamage.cpp - events/GameResumed.cpp - events/ObjectVisitEnded.cpp - events/ObjectVisitStarted.cpp - events/PlayerGotTurn.cpp - events/TurnStarted.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 - filesystem/AdapterLoaders.cpp - filesystem/CArchiveLoader.cpp - filesystem/CBinaryReader.cpp - filesystem/CCompressedStream.cpp - filesystem/CFileInputStream.cpp - filesystem/CFilesystemLoader.cpp - filesystem/CMemoryBuffer.cpp - filesystem/CMemoryStream.cpp - filesystem/CZipLoader.cpp - filesystem/CZipSaver.cpp - filesystem/FileInfo.cpp - filesystem/FileStream.cpp - filesystem/Filesystem.cpp - filesystem/MinizipExtensions.cpp - filesystem/ResourceID.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 - logging/CBasicLogConfigurator.cpp - logging/CLogger.cpp + ${MAIN_LIB_DIR}/logging/CBasicLogConfigurator.cpp + ${MAIN_LIB_DIR}/logging/CLogger.cpp - mapObjects/CArmedInstance.cpp - mapObjects/CBank.cpp - mapObjects/CGHeroInstance.cpp - mapObjects/CGMarket.cpp - mapObjects/CGPandoraBox.cpp - mapObjects/CGTownInstance.cpp - mapObjects/CObjectClassesHandler.cpp - mapObjects/CObjectHandler.cpp - mapObjects/CommonConstructors.cpp - mapObjects/CQuest.cpp - mapObjects/CRewardableConstructor.cpp - mapObjects/CRewardableObject.cpp - mapObjects/JsonRandom.cpp - mapObjects/MiscObjects.cpp - mapObjects/ObjectTemplate.cpp + ${MAIN_LIB_DIR}/mapObjects/CArmedInstance.cpp + ${MAIN_LIB_DIR}/mapObjects/CBank.cpp + ${MAIN_LIB_DIR}/mapObjects/CGHeroInstance.cpp + ${MAIN_LIB_DIR}/mapObjects/CGMarket.cpp + ${MAIN_LIB_DIR}/mapObjects/CGPandoraBox.cpp + ${MAIN_LIB_DIR}/mapObjects/CGTownInstance.cpp + ${MAIN_LIB_DIR}/mapObjects/CObjectClassesHandler.cpp + ${MAIN_LIB_DIR}/mapObjects/CObjectHandler.cpp + ${MAIN_LIB_DIR}/mapObjects/CommonConstructors.cpp + ${MAIN_LIB_DIR}/mapObjects/CQuest.cpp + ${MAIN_LIB_DIR}/mapObjects/CRewardableConstructor.cpp + ${MAIN_LIB_DIR}/mapObjects/CRewardableObject.cpp + ${MAIN_LIB_DIR}/mapObjects/JsonRandom.cpp + ${MAIN_LIB_DIR}/mapObjects/MiscObjects.cpp + ${MAIN_LIB_DIR}/mapObjects/ObjectTemplate.cpp - mapping/CCampaignHandler.cpp - mapping/CDrawRoadsOperation.cpp - mapping/CMap.cpp - mapping/CMapEditManager.cpp - mapping/CMapInfo.cpp - mapping/CMapOperation.cpp - mapping/CMapService.cpp - mapping/MapEditUtils.cpp - mapping/MapFormatH3M.cpp - mapping/MapFormatJson.cpp + ${MAIN_LIB_DIR}/mapping/CCampaignHandler.cpp + ${MAIN_LIB_DIR}/mapping/CDrawRoadsOperation.cpp + ${MAIN_LIB_DIR}/mapping/CMap.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/MapFormatH3M.cpp + ${MAIN_LIB_DIR}/mapping/MapFormatJson.cpp - registerTypes/RegisterTypes.cpp - registerTypes/TypesClientPacks1.cpp - registerTypes/TypesClientPacks2.cpp - registerTypes/TypesMapObjects1.cpp - registerTypes/TypesMapObjects2.cpp - registerTypes/TypesMapObjects3.cpp - registerTypes/TypesLobbyPacks.cpp - registerTypes/TypesServerPacks.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 - rmg/RmgArea.cpp - rmg/RmgObject.cpp - rmg/RmgPath.cpp - rmg/CMapGenerator.cpp - rmg/CMapGenOptions.cpp - rmg/CRmgTemplate.cpp - rmg/CRmgTemplateStorage.cpp - rmg/CZonePlacer.cpp - rmg/TileInfo.cpp - rmg/Zone.cpp - rmg/Functions.cpp - rmg/ObjectManager.cpp - rmg/RoadPlacer.cpp - rmg/TreasurePlacer.cpp - rmg/RmgMap.cpp - rmg/ConnectionsPlacer.cpp - rmg/WaterAdopter.cpp - rmg/TownPlacer.cpp - rmg/WaterProxy.cpp - rmg/WaterRoutes.cpp - rmg/RockPlacer.cpp - rmg/ObstaclePlacer.cpp - rmg/RiverPlacer.cpp - rmg/TerrainPainter.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/ObjectManager.cpp + ${MAIN_LIB_DIR}/rmg/RoadPlacer.cpp + ${MAIN_LIB_DIR}/rmg/TreasurePlacer.cpp + ${MAIN_LIB_DIR}/rmg/RmgMap.cpp + ${MAIN_LIB_DIR}/rmg/ConnectionsPlacer.cpp + ${MAIN_LIB_DIR}/rmg/WaterAdopter.cpp + ${MAIN_LIB_DIR}/rmg/TownPlacer.cpp + ${MAIN_LIB_DIR}/rmg/WaterProxy.cpp + ${MAIN_LIB_DIR}/rmg/WaterRoutes.cpp + ${MAIN_LIB_DIR}/rmg/RockPlacer.cpp + ${MAIN_LIB_DIR}/rmg/ObstaclePlacer.cpp + ${MAIN_LIB_DIR}/rmg/RiverPlacer.cpp + ${MAIN_LIB_DIR}/rmg/TerrainPainter.cpp - serializer/BinaryDeserializer.cpp - serializer/BinarySerializer.cpp - serializer/CLoadIntegrityValidator.cpp - serializer/CMemorySerializer.cpp - serializer/Connection.cpp - serializer/CSerializer.cpp - serializer/CTypeList.cpp - serializer/JsonDeserializer.cpp - serializer/JsonSerializeFormat.cpp - serializer/JsonSerializer.cpp - serializer/JsonUpdater.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 - spells/AbilityCaster.cpp - spells/AdventureSpellMechanics.cpp - spells/BattleSpellMechanics.cpp - spells/BonusCaster.cpp - spells/CSpellHandler.cpp - spells/ISpellMechanics.cpp - spells/Problem.cpp - spells/ProxyCaster.cpp - spells/TargetCondition.cpp - spells/ViewSpellInt.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/ISpellMechanics.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 - spells/effects/Catapult.cpp - spells/effects/Clone.cpp - spells/effects/Damage.cpp - spells/effects/Dispel.cpp - spells/effects/Effect.cpp - spells/effects/Effects.cpp - spells/effects/Heal.cpp - spells/effects/LocationEffect.cpp - spells/effects/Obstacle.cpp - spells/effects/Registry.cpp - spells/effects/UnitEffect.cpp - spells/effects/Summon.cpp - spells/effects/Teleport.cpp - spells/effects/Timed.cpp - spells/effects/RemoveObstacle.cpp - spells/effects/Sacrifice.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/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/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 - vstd/StringUtils.cpp - - BattleFieldHandler.cpp - CAndroidVMHelper.cpp - CArtHandler.cpp - CBonusTypeHandler.cpp - CBuildingHandler.cpp - CConfigHandler.cpp - CConsoleHandler.cpp - CCreatureHandler.cpp - CCreatureSet.cpp - CGameInfoCallback.cpp - CGameInterface.cpp - CGameState.cpp - CGeneralTextHandler.cpp - CHeroHandler.cpp - CModHandler.cpp - CPathfinder.cpp - CPlayerState.cpp - CRandomGenerator.cpp - CScriptingModule.cpp - CSkillHandler.cpp - CStack.cpp - CThreadHelper.cpp - CTownHandler.cpp - GameConstants.cpp - HeroBonus.cpp - IGameCallback.cpp - IHandlerBase.cpp - JsonDetail.cpp - JsonNode.cpp - LoadProgress.cpp - LogicalExpression.cpp - NetPacksLib.cpp - ObstacleHandler.cpp - StartInfo.cpp - ResourceSet.cpp - ScriptHandler.cpp - Terrain.cpp - VCMIDirs.cpp - VCMI_Lib.cpp + ${MAIN_LIB_DIR}/vstd/StringUtils.cpp + + ${MAIN_LIB_DIR}/BattleFieldHandler.cpp + ${MAIN_LIB_DIR}/CAndroidVMHelper.cpp + ${MAIN_LIB_DIR}/CArtHandler.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}/CGameState.cpp + ${MAIN_LIB_DIR}/CGeneralTextHandler.cpp + ${MAIN_LIB_DIR}/CHeroHandler.cpp + ${MAIN_LIB_DIR}/CModHandler.cpp + ${MAIN_LIB_DIR}/CPathfinder.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}/HeroBonus.cpp + ${MAIN_LIB_DIR}/IGameCallback.cpp + ${MAIN_LIB_DIR}/IHandlerBase.cpp + ${MAIN_LIB_DIR}/JsonDetail.cpp + ${MAIN_LIB_DIR}/JsonNode.cpp + ${MAIN_LIB_DIR}/LoadProgress.cpp + ${MAIN_LIB_DIR}/LogicalExpression.cpp + ${MAIN_LIB_DIR}/NetPacksLib.cpp + ${MAIN_LIB_DIR}/ObstacleHandler.cpp + ${MAIN_LIB_DIR}/StartInfo.cpp + ${MAIN_LIB_DIR}/ResourceSet.cpp + ${MAIN_LIB_DIR}/ScriptHandler.cpp + ${MAIN_LIB_DIR}/Terrain.cpp + ${MAIN_LIB_DIR}/VCMIDirs.cpp + ${MAIN_LIB_DIR}/VCMI_Lib.cpp ${VCMILIB_ADDITIONAL_SOURCES} -) + ) -# Version.cpp is a generated file -set_source_files_properties(${CMAKE_BINARY_DIR}/Version.cpp - PROPERTIES GENERATED TRUE -) + # Version.cpp is a generated file + set_source_files_properties(${CMAKE_BINARY_DIR}/Version.cpp + PROPERTIES GENERATED TRUE + ) -set(lib_HEADERS - ../include/vstd/CLoggerBase.h - ../Global.h - StdInc.h + set(lib_HEADERS + ${CMAKE_SOURCE_DIR}/include/vstd/CLoggerBase.h + ${CMAKE_SOURCE_DIR}/Global.h + ${MAIN_LIB_DIR}/StdInc.h - ../include/vstd/ContainerUtils.h - ../include/vstd/RNG.h - ../include/vstd/StringUtils.h + ${CMAKE_SOURCE_DIR}/include/vstd/ContainerUtils.h + ${CMAKE_SOURCE_DIR}/include/vstd/RNG.h + ${CMAKE_SOURCE_DIR}/include/vstd/StringUtils.h - ../include/vcmi/events/ApplyDamage.h - ../include/vcmi/events/Event.h - ../include/vcmi/events/EventBus.h - ../include/vcmi/events/SubscriptionRegistry.h + ${CMAKE_SOURCE_DIR}/include/vcmi/events/ApplyDamage.h + ${CMAKE_SOURCE_DIR}/include/vcmi/events/Event.h + ${CMAKE_SOURCE_DIR}/include/vcmi/events/EventBus.h + ${CMAKE_SOURCE_DIR}/include/vcmi/events/SubscriptionRegistry.h - ../include/vcmi/scripting/Service.h + ${CMAKE_SOURCE_DIR}/include/vcmi/scripting/Service.h - ../include/vcmi/spells/Caster.h - ../include/vcmi/spells/Magic.h - ../include/vcmi/spells/Service.h - ../include/vcmi/spells/Spell.h + ${CMAKE_SOURCE_DIR}/include/vcmi/spells/Caster.h + ${CMAKE_SOURCE_DIR}/include/vcmi/spells/Magic.h + ${CMAKE_SOURCE_DIR}/include/vcmi/spells/Service.h + ${CMAKE_SOURCE_DIR}/include/vcmi/spells/Spell.h - ../include/vcmi/Artifact.h - ../include/vcmi/ArtifactService.h - ../include/vcmi/Creature.h - ../include/vcmi/CreatureService.h - ../include/vcmi/Entity.h - ../include/vcmi/Environment.h - ../include/vcmi/Services.h + ${CMAKE_SOURCE_DIR}/include/vcmi/Artifact.h + ${CMAKE_SOURCE_DIR}/include/vcmi/ArtifactService.h + ${CMAKE_SOURCE_DIR}/include/vcmi/Creature.h + ${CMAKE_SOURCE_DIR}/include/vcmi/CreatureService.h + ${CMAKE_SOURCE_DIR}/include/vcmi/Entity.h + ${CMAKE_SOURCE_DIR}/include/vcmi/Environment.h + ${CMAKE_SOURCE_DIR}/include/vcmi/Services.h - abilities/Ability.h + ${MAIN_LIB_DIR}/abilities/Ability.h - battle/AccessibilityInfo.h - battle/BattleAction.h - battle/BattleAttackInfo.h - battle/BattleHex.h - battle/BattleInfo.h - battle/BattleProxy.h - battle/CBattleInfoCallback.h - battle/CBattleInfoEssentials.h - battle/CCallbackBase.h - battle/CObstacleInstance.h - battle/CPlayerBattleCallback.h - battle/CUnitState.h - battle/Destination.h - battle/IBattleInfoCallback.h - battle/IBattleState.h - battle/IUnitInfo.h - battle/ReachabilityInfo.h - battle/SideInBattle.h - battle/SiegeInfo.h - battle/Unit.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/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/Destination.h + ${MAIN_LIB_DIR}/battle/IBattleInfoCallback.h + ${MAIN_LIB_DIR}/battle/IBattleState.h + ${MAIN_LIB_DIR}/battle/IUnitInfo.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 - events/ApplyDamage.h - events/GameResumed.h - events/ObjectVisitEnded.h - events/ObjectVisitStarted.h - events/PlayerGotTurn.h - events/TurnStarted.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 - filesystem/AdapterLoaders.h - filesystem/CArchiveLoader.h - filesystem/CBinaryReader.h - filesystem/CCompressedStream.h - filesystem/CFileInputStream.h - filesystem/CFilesystemLoader.h - filesystem/CInputOutputStream.h - filesystem/CInputStream.h - filesystem/CMemoryBuffer.h - filesystem/CMemoryStream.h - filesystem/COutputStream.h - filesystem/CStream.h - filesystem/CZipLoader.h - filesystem/CZipSaver.h - filesystem/FileInfo.h - filesystem/FileStream.h - filesystem/Filesystem.h - filesystem/ISimpleResourceLoader.h - filesystem/MinizipExtensions.h - filesystem/ResourceID.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 - logging/CBasicLogConfigurator.h - logging/CLogger.h + ${MAIN_LIB_DIR}/logging/CBasicLogConfigurator.h + ${MAIN_LIB_DIR}/logging/CLogger.h - mapObjects/CArmedInstance.h - mapObjects/CBank.h - mapObjects/CGHeroInstance.h - mapObjects/CGMarket.h - mapObjects/CGPandoraBox.h - mapObjects/CGTownInstance.h - mapObjects/CObjectClassesHandler.h - mapObjects/CObjectHandler.h - mapObjects/CommonConstructors.h - mapObjects/CQuest.h - mapObjects/CRewardableConstructor.h - mapObjects/CRewardableObject.h - mapObjects/JsonRandom.h - mapObjects/MapObjects.h - mapObjects/MiscObjects.h - mapObjects/ObjectTemplate.h + ${MAIN_LIB_DIR}/mapObjects/CArmedInstance.h + ${MAIN_LIB_DIR}/mapObjects/CBank.h + ${MAIN_LIB_DIR}/mapObjects/CGHeroInstance.h + ${MAIN_LIB_DIR}/mapObjects/CGMarket.h + ${MAIN_LIB_DIR}/mapObjects/CGPandoraBox.h + ${MAIN_LIB_DIR}/mapObjects/CGTownInstance.h + ${MAIN_LIB_DIR}/mapObjects/CObjectClassesHandler.h + ${MAIN_LIB_DIR}/mapObjects/CObjectHandler.h + ${MAIN_LIB_DIR}/mapObjects/CommonConstructors.h + ${MAIN_LIB_DIR}/mapObjects/CQuest.h + ${MAIN_LIB_DIR}/mapObjects/CRewardableConstructor.h + ${MAIN_LIB_DIR}/mapObjects/CRewardableObject.h + ${MAIN_LIB_DIR}/mapObjects/JsonRandom.h + ${MAIN_LIB_DIR}/mapObjects/MapObjects.h + ${MAIN_LIB_DIR}/mapObjects/MiscObjects.h + ${MAIN_LIB_DIR}/mapObjects/ObjectTemplate.h - mapping/CCampaignHandler.h - mapping/CDrawRoadsOperation.h - mapping/CMapDefines.h - mapping/CMapEditManager.h - mapping/CMap.h - mapping/CMapInfo.h - mapping/CMapOperation.h - mapping/CMapService.h - mapping/MapEditUtils.h - mapping/MapFormatH3M.h - mapping/MapFormatJson.h + ${MAIN_LIB_DIR}/mapping/CCampaignHandler.h + ${MAIN_LIB_DIR}/mapping/CDrawRoadsOperation.h + ${MAIN_LIB_DIR}/mapping/CMapDefines.h + ${MAIN_LIB_DIR}/mapping/CMapEditManager.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/MapFormatH3M.h + ${MAIN_LIB_DIR}/mapping/MapFormatJson.h - registerTypes/RegisterTypes.h + ${MAIN_LIB_DIR}/registerTypes/RegisterTypes.h - rmg/RmgArea.h - rmg/RmgObject.h - rmg/RmgPath.h - rmg/CMapGenerator.h - rmg/CMapGenOptions.h - rmg/CRmgTemplate.h - rmg/CRmgTemplateStorage.h - rmg/CZonePlacer.h - rmg/TileInfo.h - rmg/Zone.h - rmg/Functions.h - rmg/ObjectManager.h - rmg/RoadPlacer.h - rmg/TreasurePlacer.h - rmg/RmgMap.h - rmg/ConnectionsPlacer.h - rmg/WaterAdopter.h - rmg/TownPlacer.h - rmg/WaterProxy.h - rmg/WaterRoutes.h - rmg/RockPlacer.h - rmg/ObstaclePlacer.h - rmg/RiverPlacer.h - rmg/TerrainPainter.h - rmg/float3.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/Functions.h + ${MAIN_LIB_DIR}/rmg/ObjectManager.h + ${MAIN_LIB_DIR}/rmg/RoadPlacer.h + ${MAIN_LIB_DIR}/rmg/TreasurePlacer.h + ${MAIN_LIB_DIR}/rmg/RmgMap.h + ${MAIN_LIB_DIR}/rmg/ConnectionsPlacer.h + ${MAIN_LIB_DIR}/rmg/WaterAdopter.h + ${MAIN_LIB_DIR}/rmg/TownPlacer.h + ${MAIN_LIB_DIR}/rmg/WaterProxy.h + ${MAIN_LIB_DIR}/rmg/WaterRoutes.h + ${MAIN_LIB_DIR}/rmg/RockPlacer.h + ${MAIN_LIB_DIR}/rmg/ObstaclePlacer.h + ${MAIN_LIB_DIR}/rmg/RiverPlacer.h + ${MAIN_LIB_DIR}/rmg/TerrainPainter.h + ${MAIN_LIB_DIR}/rmg/float3.h - serializer/BinaryDeserializer.h - serializer/BinarySerializer.h - serializer/CLoadIntegrityValidator.h - serializer/CMemorySerializer.h - serializer/Connection.h - serializer/CSerializer.h - serializer/CTypeList.h - serializer/JsonDeserializer.h - serializer/JsonSerializeFormat.h - serializer/JsonSerializer.h - serializer/JsonUpdater.h - serializer/Cast.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/Cast.h - spells/AbilityCaster.h - spells/AdventureSpellMechanics.h - spells/BattleSpellMechanics.h - spells/BonusCaster.h - spells/CSpellHandler.h - spells/ISpellMechanics.h - spells/Problem.h - spells/ProxyCaster.h - spells/TargetCondition.h - spells/ViewSpellInt.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/ISpellMechanics.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 - spells/effects/Catapult.h - spells/effects/Clone.h - spells/effects/Damage.h - spells/effects/Dispel.h - spells/effects/Effect.h - spells/effects/Effects.h - spells/effects/EffectsFwd.h - spells/effects/Heal.h - spells/effects/LocationEffect.h - spells/effects/Obstacle.h - spells/effects/Registry.h - spells/effects/UnitEffect.h - spells/effects/Summon.h - spells/effects/Teleport.h - spells/effects/Timed.h - spells/effects/RemoveObstacle.h - spells/effects/Sacrifice.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/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 - AI_Base.h - BattleFieldHandler.h - CAndroidVMHelper.h - CArtHandler.h - CBonusTypeHandler.h - CBuildingHandler.h - CConfigHandler.h - CConsoleHandler.h - CCreatureHandler.h - CCreatureSet.h - CGameInfoCallback.h - CGameInterface.h - CGameStateFwd.h - CGameState.h - CGeneralTextHandler.h - CHeroHandler.h - CModHandler.h - CondSh.h - ConstTransitivePtr.h - CPathfinder.h - CPlayerState.h - CRandomGenerator.h - CScriptingModule.h - CSkillHandler.h - CSoundBase.h - CStack.h - CStopWatch.h - CThreadHelper.h - CTownHandler.h - FunctionList.h - GameConstants.h - HeroBonus.h - IBonusTypeHandler.h - IGameCallback.h - IGameEventsReceiver.h - IHandlerBase.h - int3.h - Interprocess.h - JsonDetail.h - JsonNode.h - LoadProgress.h - LogicalExpression.h - NetPacksBase.h - NetPacks.h - NetPacksLobby.h - ObstacleHandler.h - PathfinderUtil.h - ResourceSet.h - ScriptHandler.h - ScopeGuard.h - StartInfo.h - StringConstants.h - Terrain.h - UnlockGuard.h - VCMIDirs.h - vcmi_endian.h - VCMI_Lib.h -) + ${MAIN_LIB_DIR}/AI_Base.h + ${MAIN_LIB_DIR}/BattleFieldHandler.h + ${MAIN_LIB_DIR}/CAndroidVMHelper.h + ${MAIN_LIB_DIR}/CArtHandler.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}/CGameStateFwd.h + ${MAIN_LIB_DIR}/CGameState.h + ${MAIN_LIB_DIR}/CGeneralTextHandler.h + ${MAIN_LIB_DIR}/CHeroHandler.h + ${MAIN_LIB_DIR}/CModHandler.h + ${MAIN_LIB_DIR}/CondSh.h + ${MAIN_LIB_DIR}/ConstTransitivePtr.h + ${MAIN_LIB_DIR}/CPathfinder.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}/HeroBonus.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}/LoadProgress.h + ${MAIN_LIB_DIR}/LogicalExpression.h + ${MAIN_LIB_DIR}/NetPacksBase.h + ${MAIN_LIB_DIR}/NetPacks.h + ${MAIN_LIB_DIR}/NetPacksLobby.h + ${MAIN_LIB_DIR}/ObstacleHandler.h + ${MAIN_LIB_DIR}/PathfinderUtil.h + ${MAIN_LIB_DIR}/ResourceSet.h + ${MAIN_LIB_DIR}/ScriptHandler.h + ${MAIN_LIB_DIR}/ScopeGuard.h + ${MAIN_LIB_DIR}/StartInfo.h + ${MAIN_LIB_DIR}/StringConstants.h + ${MAIN_LIB_DIR}/Terrain.h + ${MAIN_LIB_DIR}/UnlockGuard.h + ${MAIN_LIB_DIR}/VCMIDirs.h + ${MAIN_LIB_DIR}/vcmi_endian.h + ${MAIN_LIB_DIR}/VCMI_Lib.h + ) -if(APPLE_IOS) - set(lib_SRCS ${lib_SRCS} CIOSUtils.m) - set(lib_HEADERS ${lib_HEADERS} CIOSUtils.h) -endif(APPLE_IOS) + if(APPLE_IOS) + set(lib_SRCS ${lib_SRCS} ${MAIN_LIB_DIR}/CIOSUtils.m) + set(lib_HEADERS ${lib_HEADERS} ${MAIN_LIB_DIR}/CIOSUtils.h) + endif(APPLE_IOS) -assign_source_group(${lib_SRCS} ${lib_HEADERS}) + assign_source_group(${lib_SRCS} ${lib_HEADERS}) -add_library(vcmi SHARED ${lib_SRCS} ${lib_HEADERS}) -set_target_properties(vcmi PROPERTIES COMPILE_DEFINITIONS "VCMI_DLL=1") -target_link_libraries(vcmi PUBLIC + 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 -) - -target_include_directories(vcmi - PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} - PUBLIC ${CMAKE_HOME_DIRECTORY} - PUBLIC ${CMAKE_HOME_DIRECTORY}/include - PRIVATE ${SDL2_INCLUDE_DIR} -) - -if(WIN32) - set_target_properties(vcmi - PROPERTIES - OUTPUT_NAME "VCMI_lib" - PROJECT_LABEL "VCMI_lib" ) -endif() -if(ANDROID) - return() -endif() - -vcmi_set_output_dir(vcmi "") - -enable_pch(vcmi) - -# We want to deploy assets into build directory for easier debugging without install -if(NOT APPLE_IOS) - add_custom_command(TARGET vcmi 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 ${CMAKE_SOURCE_DIR}/config ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/config - COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/Mods ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/Mods + target_include_directories(${TARGET_NAME} + PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} + PUBLIC ${CMAKE_SOURCE_DIR} + PUBLIC ${CMAKE_SOURCE_DIR}/include + PUBLIC ${MAIN_LIB_DIR} + PRIVATE ${SDL2_INCLUDE_DIR} ) -endif() -# Update version before vcmi compiling -if(TARGET update_version) - add_dependencies(vcmi update_version) -endif() + if(WIN32) + set_target_properties(${TARGET_NAME} + PROPERTIES + OUTPUT_NAME "VCMI_lib" + PROJECT_LABEL "VCMI_lib" + ) + endif() -install(TARGETS vcmi RUNTIME DESTINATION ${LIB_DIR} LIBRARY DESTINATION ${LIB_DIR} COMPONENT core) -if(APPLE_IOS) - get_target_property(LINKED_LIBS vcmi LINK_LIBRARIES) - foreach(LINKED_LIB IN LISTS LINKED_LIBS) - if(TARGET ${LINKED_LIB}) - get_target_property(LIB_TYPE ${LINKED_LIB} TYPE) - if(LIB_TYPE STREQUAL "SHARED_LIBRARY") - get_target_property(_aliased ${LINKED_LIB} ALIASED_TARGET) - if(_aliased) - set(LINKED_LIB_REAL ${_aliased}) - else() - set(LINKED_LIB_REAL ${LINKED_LIB}) + if(ANDROID) + return() + 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(NOT APPLE_IOS) + 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 ${CMAKE_SOURCE_DIR}/config ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/config + COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_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() + + install(TARGETS ${TARGET_NAME} RUNTIME DESTINATION ${LIB_DIR} LIBRARY DESTINATION ${LIB_DIR} COMPONENT core) + if(APPLE_IOS) + 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} COMPONENT core) endif() - install(TARGETS ${LINKED_LIB_REAL} LIBRARY DESTINATION ${LIB_DIR} COMPONENT core) + continue() endif() - else() - if(LINKED_LIB MATCHES "\\${CMAKE_SHARED_LIBRARY_SUFFIX}$") - install(FILES ${LINKED_LIB} DESTINATION ${LIB_DIR} COMPONENT core) + + get_target_property(LIB_TYPE ${LINKED_LIB} TYPE) + if(NOT LIB_TYPE STREQUAL "SHARED_LIBRARY") + continue() endif() - endif() - endforeach() -endif() + + get_target_property(_aliased ${LINKED_LIB} ALIASED_TARGET) + if(_aliased) + set(LINKED_LIB_REAL ${_aliased}) + else() + set(LINKED_LIB_REAL ${LINKED_LIB}) + endif() + install(TARGETS ${LINKED_LIB_REAL} LIBRARY DESTINATION ${LIB_DIR} COMPONENT core) + endforeach() + endif() +endmacro() diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt new file mode 100644 index 000000000..d0536b245 --- /dev/null +++ b/lib/CMakeLists.txt @@ -0,0 +1 @@ +add_main_lib(vcmi SHARED)