VCMI_lib.cmake 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541
  1. macro(add_main_lib TARGET_NAME LIBRARY_TYPE)
  2. if(NOT DEFINED MAIN_LIB_DIR)
  3. set(MAIN_LIB_DIR "${CMAKE_SOURCE_DIR}/lib")
  4. endif()
  5. set(lib_SRCS
  6. ${MAIN_LIB_DIR}/StdInc.cpp
  7. ${MAIN_LIB_DIR}/battle/AccessibilityInfo.cpp
  8. ${MAIN_LIB_DIR}/battle/BattleAction.cpp
  9. ${MAIN_LIB_DIR}/battle/BattleAttackInfo.cpp
  10. ${MAIN_LIB_DIR}/battle/BattleHex.cpp
  11. ${MAIN_LIB_DIR}/battle/BattleInfo.cpp
  12. ${MAIN_LIB_DIR}/battle/BattleProxy.cpp
  13. ${MAIN_LIB_DIR}/battle/CBattleInfoCallback.cpp
  14. ${MAIN_LIB_DIR}/battle/CBattleInfoEssentials.cpp
  15. ${MAIN_LIB_DIR}/battle/CCallbackBase.cpp
  16. ${MAIN_LIB_DIR}/battle/CObstacleInstance.cpp
  17. ${MAIN_LIB_DIR}/battle/CPlayerBattleCallback.cpp
  18. ${MAIN_LIB_DIR}/battle/CUnitState.cpp
  19. ${MAIN_LIB_DIR}/battle/Destination.cpp
  20. ${MAIN_LIB_DIR}/battle/IBattleState.cpp
  21. ${MAIN_LIB_DIR}/battle/ReachabilityInfo.cpp
  22. ${MAIN_LIB_DIR}/battle/SideInBattle.cpp
  23. ${MAIN_LIB_DIR}/battle/SiegeInfo.cpp
  24. ${MAIN_LIB_DIR}/battle/Unit.cpp
  25. ${MAIN_LIB_DIR}/events/ApplyDamage.cpp
  26. ${MAIN_LIB_DIR}/events/GameResumed.cpp
  27. ${MAIN_LIB_DIR}/events/ObjectVisitEnded.cpp
  28. ${MAIN_LIB_DIR}/events/ObjectVisitStarted.cpp
  29. ${MAIN_LIB_DIR}/events/PlayerGotTurn.cpp
  30. ${MAIN_LIB_DIR}/events/TurnStarted.cpp
  31. ${MAIN_LIB_DIR}/filesystem/AdapterLoaders.cpp
  32. ${MAIN_LIB_DIR}/filesystem/CArchiveLoader.cpp
  33. ${MAIN_LIB_DIR}/filesystem/CBinaryReader.cpp
  34. ${MAIN_LIB_DIR}/filesystem/CCompressedStream.cpp
  35. ${MAIN_LIB_DIR}/filesystem/CFileInputStream.cpp
  36. ${MAIN_LIB_DIR}/filesystem/CFilesystemLoader.cpp
  37. ${MAIN_LIB_DIR}/filesystem/CMemoryBuffer.cpp
  38. ${MAIN_LIB_DIR}/filesystem/CMemoryStream.cpp
  39. ${MAIN_LIB_DIR}/filesystem/CZipLoader.cpp
  40. ${MAIN_LIB_DIR}/filesystem/CZipSaver.cpp
  41. ${MAIN_LIB_DIR}/filesystem/FileInfo.cpp
  42. ${MAIN_LIB_DIR}/filesystem/FileStream.cpp
  43. ${MAIN_LIB_DIR}/filesystem/Filesystem.cpp
  44. ${MAIN_LIB_DIR}/filesystem/MinizipExtensions.cpp
  45. ${MAIN_LIB_DIR}/filesystem/ResourceID.cpp
  46. ${MAIN_LIB_DIR}/logging/CBasicLogConfigurator.cpp
  47. ${MAIN_LIB_DIR}/logging/CLogger.cpp
  48. ${MAIN_LIB_DIR}/mapObjects/CArmedInstance.cpp
  49. ${MAIN_LIB_DIR}/mapObjects/CBank.cpp
  50. ${MAIN_LIB_DIR}/mapObjects/CGHeroInstance.cpp
  51. ${MAIN_LIB_DIR}/mapObjects/CGMarket.cpp
  52. ${MAIN_LIB_DIR}/mapObjects/CGPandoraBox.cpp
  53. ${MAIN_LIB_DIR}/mapObjects/CGTownInstance.cpp
  54. ${MAIN_LIB_DIR}/mapObjects/CObjectClassesHandler.cpp
  55. ${MAIN_LIB_DIR}/mapObjects/CObjectHandler.cpp
  56. ${MAIN_LIB_DIR}/mapObjects/CommonConstructors.cpp
  57. ${MAIN_LIB_DIR}/mapObjects/CQuest.cpp
  58. ${MAIN_LIB_DIR}/mapObjects/CRewardableConstructor.cpp
  59. ${MAIN_LIB_DIR}/mapObjects/CRewardableObject.cpp
  60. ${MAIN_LIB_DIR}/mapObjects/JsonRandom.cpp
  61. ${MAIN_LIB_DIR}/mapObjects/MiscObjects.cpp
  62. ${MAIN_LIB_DIR}/mapObjects/ObjectTemplate.cpp
  63. ${MAIN_LIB_DIR}/mapping/CCampaignHandler.cpp
  64. ${MAIN_LIB_DIR}/mapping/CDrawRoadsOperation.cpp
  65. ${MAIN_LIB_DIR}/mapping/CMap.cpp
  66. ${MAIN_LIB_DIR}/mapping/CMapEditManager.cpp
  67. ${MAIN_LIB_DIR}/mapping/CMapInfo.cpp
  68. ${MAIN_LIB_DIR}/mapping/CMapOperation.cpp
  69. ${MAIN_LIB_DIR}/mapping/CMapService.cpp
  70. ${MAIN_LIB_DIR}/mapping/MapEditUtils.cpp
  71. ${MAIN_LIB_DIR}/mapping/MapFormatH3M.cpp
  72. ${MAIN_LIB_DIR}/mapping/MapFormatJson.cpp
  73. ${MAIN_LIB_DIR}/registerTypes/RegisterTypes.cpp
  74. ${MAIN_LIB_DIR}/registerTypes/TypesClientPacks1.cpp
  75. ${MAIN_LIB_DIR}/registerTypes/TypesClientPacks2.cpp
  76. ${MAIN_LIB_DIR}/registerTypes/TypesMapObjects1.cpp
  77. ${MAIN_LIB_DIR}/registerTypes/TypesMapObjects2.cpp
  78. ${MAIN_LIB_DIR}/registerTypes/TypesMapObjects3.cpp
  79. ${MAIN_LIB_DIR}/registerTypes/TypesLobbyPacks.cpp
  80. ${MAIN_LIB_DIR}/registerTypes/TypesServerPacks.cpp
  81. ${MAIN_LIB_DIR}/rmg/RmgArea.cpp
  82. ${MAIN_LIB_DIR}/rmg/RmgObject.cpp
  83. ${MAIN_LIB_DIR}/rmg/RmgPath.cpp
  84. ${MAIN_LIB_DIR}/rmg/CMapGenerator.cpp
  85. ${MAIN_LIB_DIR}/rmg/CMapGenOptions.cpp
  86. ${MAIN_LIB_DIR}/rmg/CRmgTemplate.cpp
  87. ${MAIN_LIB_DIR}/rmg/CRmgTemplateStorage.cpp
  88. ${MAIN_LIB_DIR}/rmg/CZonePlacer.cpp
  89. ${MAIN_LIB_DIR}/rmg/TileInfo.cpp
  90. ${MAIN_LIB_DIR}/rmg/Zone.cpp
  91. ${MAIN_LIB_DIR}/rmg/Functions.cpp
  92. ${MAIN_LIB_DIR}/rmg/ObjectManager.cpp
  93. ${MAIN_LIB_DIR}/rmg/RoadPlacer.cpp
  94. ${MAIN_LIB_DIR}/rmg/TreasurePlacer.cpp
  95. ${MAIN_LIB_DIR}/rmg/RmgMap.cpp
  96. ${MAIN_LIB_DIR}/rmg/ConnectionsPlacer.cpp
  97. ${MAIN_LIB_DIR}/rmg/WaterAdopter.cpp
  98. ${MAIN_LIB_DIR}/rmg/TownPlacer.cpp
  99. ${MAIN_LIB_DIR}/rmg/WaterProxy.cpp
  100. ${MAIN_LIB_DIR}/rmg/WaterRoutes.cpp
  101. ${MAIN_LIB_DIR}/rmg/RockPlacer.cpp
  102. ${MAIN_LIB_DIR}/rmg/ObstaclePlacer.cpp
  103. ${MAIN_LIB_DIR}/rmg/RiverPlacer.cpp
  104. ${MAIN_LIB_DIR}/rmg/TerrainPainter.cpp
  105. ${MAIN_LIB_DIR}/serializer/BinaryDeserializer.cpp
  106. ${MAIN_LIB_DIR}/serializer/BinarySerializer.cpp
  107. ${MAIN_LIB_DIR}/serializer/CLoadIntegrityValidator.cpp
  108. ${MAIN_LIB_DIR}/serializer/CMemorySerializer.cpp
  109. ${MAIN_LIB_DIR}/serializer/Connection.cpp
  110. ${MAIN_LIB_DIR}/serializer/CSerializer.cpp
  111. ${MAIN_LIB_DIR}/serializer/CTypeList.cpp
  112. ${MAIN_LIB_DIR}/serializer/JsonDeserializer.cpp
  113. ${MAIN_LIB_DIR}/serializer/JsonSerializeFormat.cpp
  114. ${MAIN_LIB_DIR}/serializer/JsonSerializer.cpp
  115. ${MAIN_LIB_DIR}/serializer/JsonUpdater.cpp
  116. ${MAIN_LIB_DIR}/spells/AbilityCaster.cpp
  117. ${MAIN_LIB_DIR}/spells/AdventureSpellMechanics.cpp
  118. ${MAIN_LIB_DIR}/spells/BattleSpellMechanics.cpp
  119. ${MAIN_LIB_DIR}/spells/BonusCaster.cpp
  120. ${MAIN_LIB_DIR}/spells/CSpellHandler.cpp
  121. ${MAIN_LIB_DIR}/spells/ISpellMechanics.cpp
  122. ${MAIN_LIB_DIR}/spells/Problem.cpp
  123. ${MAIN_LIB_DIR}/spells/ProxyCaster.cpp
  124. ${MAIN_LIB_DIR}/spells/TargetCondition.cpp
  125. ${MAIN_LIB_DIR}/spells/ViewSpellInt.cpp
  126. ${MAIN_LIB_DIR}/spells/effects/Catapult.cpp
  127. ${MAIN_LIB_DIR}/spells/effects/Clone.cpp
  128. ${MAIN_LIB_DIR}/spells/effects/Damage.cpp
  129. ${MAIN_LIB_DIR}/spells/effects/Dispel.cpp
  130. ${MAIN_LIB_DIR}/spells/effects/Effect.cpp
  131. ${MAIN_LIB_DIR}/spells/effects/Effects.cpp
  132. ${MAIN_LIB_DIR}/spells/effects/Heal.cpp
  133. ${MAIN_LIB_DIR}/spells/effects/LocationEffect.cpp
  134. ${MAIN_LIB_DIR}/spells/effects/Obstacle.cpp
  135. ${MAIN_LIB_DIR}/spells/effects/Registry.cpp
  136. ${MAIN_LIB_DIR}/spells/effects/UnitEffect.cpp
  137. ${MAIN_LIB_DIR}/spells/effects/Summon.cpp
  138. ${MAIN_LIB_DIR}/spells/effects/Teleport.cpp
  139. ${MAIN_LIB_DIR}/spells/effects/Timed.cpp
  140. ${MAIN_LIB_DIR}/spells/effects/RemoveObstacle.cpp
  141. ${MAIN_LIB_DIR}/spells/effects/Sacrifice.cpp
  142. ${MAIN_LIB_DIR}/vstd/StringUtils.cpp
  143. ${MAIN_LIB_DIR}/BattleFieldHandler.cpp
  144. ${MAIN_LIB_DIR}/CAndroidVMHelper.cpp
  145. ${MAIN_LIB_DIR}/CArtHandler.cpp
  146. ${MAIN_LIB_DIR}/CBonusTypeHandler.cpp
  147. ${MAIN_LIB_DIR}/CBuildingHandler.cpp
  148. ${MAIN_LIB_DIR}/CConfigHandler.cpp
  149. ${MAIN_LIB_DIR}/CConsoleHandler.cpp
  150. ${MAIN_LIB_DIR}/CCreatureHandler.cpp
  151. ${MAIN_LIB_DIR}/CCreatureSet.cpp
  152. ${MAIN_LIB_DIR}/CGameInfoCallback.cpp
  153. ${MAIN_LIB_DIR}/CGameInterface.cpp
  154. ${MAIN_LIB_DIR}/CGameState.cpp
  155. ${MAIN_LIB_DIR}/CGeneralTextHandler.cpp
  156. ${MAIN_LIB_DIR}/CHeroHandler.cpp
  157. ${MAIN_LIB_DIR}/CModHandler.cpp
  158. ${MAIN_LIB_DIR}/CPathfinder.cpp
  159. ${MAIN_LIB_DIR}/CPlayerState.cpp
  160. ${MAIN_LIB_DIR}/CRandomGenerator.cpp
  161. ${MAIN_LIB_DIR}/CScriptingModule.cpp
  162. ${MAIN_LIB_DIR}/CSkillHandler.cpp
  163. ${MAIN_LIB_DIR}/CStack.cpp
  164. ${MAIN_LIB_DIR}/CThreadHelper.cpp
  165. ${MAIN_LIB_DIR}/CTownHandler.cpp
  166. ${MAIN_LIB_DIR}/GameConstants.cpp
  167. ${MAIN_LIB_DIR}/HeroBonus.cpp
  168. ${MAIN_LIB_DIR}/IGameCallback.cpp
  169. ${MAIN_LIB_DIR}/IHandlerBase.cpp
  170. ${MAIN_LIB_DIR}/JsonDetail.cpp
  171. ${MAIN_LIB_DIR}/JsonNode.cpp
  172. ${MAIN_LIB_DIR}/LoadProgress.cpp
  173. ${MAIN_LIB_DIR}/LogicalExpression.cpp
  174. ${MAIN_LIB_DIR}/NetPacksLib.cpp
  175. ${MAIN_LIB_DIR}/ObstacleHandler.cpp
  176. ${MAIN_LIB_DIR}/StartInfo.cpp
  177. ${MAIN_LIB_DIR}/ResourceSet.cpp
  178. ${MAIN_LIB_DIR}/ScriptHandler.cpp
  179. ${MAIN_LIB_DIR}/Terrain.cpp
  180. ${MAIN_LIB_DIR}/VCMIDirs.cpp
  181. ${MAIN_LIB_DIR}/VCMI_Lib.cpp
  182. ${VCMILIB_ADDITIONAL_SOURCES}
  183. )
  184. # Version.cpp is a generated file
  185. if(ENABLE_GITVERSION)
  186. list(APPEND lib_SRCS ${CMAKE_BINARY_DIR}/Version.cpp)
  187. set_source_files_properties(${CMAKE_BINARY_DIR}/Version.cpp
  188. PROPERTIES GENERATED TRUE
  189. )
  190. endif()
  191. set(lib_HEADERS
  192. ${MAIN_LIB_DIR}/../include/vstd/CLoggerBase.h
  193. ${MAIN_LIB_DIR}/../Global.h
  194. ${MAIN_LIB_DIR}/StdInc.h
  195. ${MAIN_LIB_DIR}/../include/vstd/ContainerUtils.h
  196. ${MAIN_LIB_DIR}/../include/vstd/RNG.h
  197. ${MAIN_LIB_DIR}/../include/vstd/StringUtils.h
  198. ${MAIN_LIB_DIR}/../include/vcmi/events/ApplyDamage.h
  199. ${MAIN_LIB_DIR}/../include/vcmi/events/Event.h
  200. ${MAIN_LIB_DIR}/../include/vcmi/events/EventBus.h
  201. ${MAIN_LIB_DIR}/../include/vcmi/events/SubscriptionRegistry.h
  202. ${MAIN_LIB_DIR}/../include/vcmi/scripting/Service.h
  203. ${MAIN_LIB_DIR}/../include/vcmi/spells/Caster.h
  204. ${MAIN_LIB_DIR}/../include/vcmi/spells/Magic.h
  205. ${MAIN_LIB_DIR}/../include/vcmi/spells/Service.h
  206. ${MAIN_LIB_DIR}/../include/vcmi/spells/Spell.h
  207. ${MAIN_LIB_DIR}/../include/vcmi/Artifact.h
  208. ${MAIN_LIB_DIR}/../include/vcmi/ArtifactService.h
  209. ${MAIN_LIB_DIR}/../include/vcmi/Creature.h
  210. ${MAIN_LIB_DIR}/../include/vcmi/CreatureService.h
  211. ${MAIN_LIB_DIR}/../include/vcmi/Entity.h
  212. ${MAIN_LIB_DIR}/../include/vcmi/Environment.h
  213. ${MAIN_LIB_DIR}/../include/vcmi/Services.h
  214. ${MAIN_LIB_DIR}/abilities/Ability.h
  215. ${MAIN_LIB_DIR}/battle/AccessibilityInfo.h
  216. ${MAIN_LIB_DIR}/battle/BattleAction.h
  217. ${MAIN_LIB_DIR}/battle/BattleAttackInfo.h
  218. ${MAIN_LIB_DIR}/battle/BattleHex.h
  219. ${MAIN_LIB_DIR}/battle/BattleInfo.h
  220. ${MAIN_LIB_DIR}/battle/BattleProxy.h
  221. ${MAIN_LIB_DIR}/battle/CBattleInfoCallback.h
  222. ${MAIN_LIB_DIR}/battle/CBattleInfoEssentials.h
  223. ${MAIN_LIB_DIR}/battle/CCallbackBase.h
  224. ${MAIN_LIB_DIR}/battle/CObstacleInstance.h
  225. ${MAIN_LIB_DIR}/battle/CPlayerBattleCallback.h
  226. ${MAIN_LIB_DIR}/battle/CUnitState.h
  227. ${MAIN_LIB_DIR}/battle/Destination.h
  228. ${MAIN_LIB_DIR}/battle/IBattleInfoCallback.h
  229. ${MAIN_LIB_DIR}/battle/IBattleState.h
  230. ${MAIN_LIB_DIR}/battle/IUnitInfo.h
  231. ${MAIN_LIB_DIR}/battle/ReachabilityInfo.h
  232. ${MAIN_LIB_DIR}/battle/SideInBattle.h
  233. ${MAIN_LIB_DIR}/battle/SiegeInfo.h
  234. ${MAIN_LIB_DIR}/battle/Unit.h
  235. ${MAIN_LIB_DIR}/events/ApplyDamage.h
  236. ${MAIN_LIB_DIR}/events/GameResumed.h
  237. ${MAIN_LIB_DIR}/events/ObjectVisitEnded.h
  238. ${MAIN_LIB_DIR}/events/ObjectVisitStarted.h
  239. ${MAIN_LIB_DIR}/events/PlayerGotTurn.h
  240. ${MAIN_LIB_DIR}/events/TurnStarted.h
  241. ${MAIN_LIB_DIR}/filesystem/AdapterLoaders.h
  242. ${MAIN_LIB_DIR}/filesystem/CArchiveLoader.h
  243. ${MAIN_LIB_DIR}/filesystem/CBinaryReader.h
  244. ${MAIN_LIB_DIR}/filesystem/CCompressedStream.h
  245. ${MAIN_LIB_DIR}/filesystem/CFileInputStream.h
  246. ${MAIN_LIB_DIR}/filesystem/CFilesystemLoader.h
  247. ${MAIN_LIB_DIR}/filesystem/CInputOutputStream.h
  248. ${MAIN_LIB_DIR}/filesystem/CInputStream.h
  249. ${MAIN_LIB_DIR}/filesystem/CMemoryBuffer.h
  250. ${MAIN_LIB_DIR}/filesystem/CMemoryStream.h
  251. ${MAIN_LIB_DIR}/filesystem/COutputStream.h
  252. ${MAIN_LIB_DIR}/filesystem/CStream.h
  253. ${MAIN_LIB_DIR}/filesystem/CZipLoader.h
  254. ${MAIN_LIB_DIR}/filesystem/CZipSaver.h
  255. ${MAIN_LIB_DIR}/filesystem/FileInfo.h
  256. ${MAIN_LIB_DIR}/filesystem/FileStream.h
  257. ${MAIN_LIB_DIR}/filesystem/Filesystem.h
  258. ${MAIN_LIB_DIR}/filesystem/ISimpleResourceLoader.h
  259. ${MAIN_LIB_DIR}/filesystem/MinizipExtensions.h
  260. ${MAIN_LIB_DIR}/filesystem/ResourceID.h
  261. ${MAIN_LIB_DIR}/logging/CBasicLogConfigurator.h
  262. ${MAIN_LIB_DIR}/logging/CLogger.h
  263. ${MAIN_LIB_DIR}/mapObjects/CArmedInstance.h
  264. ${MAIN_LIB_DIR}/mapObjects/CBank.h
  265. ${MAIN_LIB_DIR}/mapObjects/CGHeroInstance.h
  266. ${MAIN_LIB_DIR}/mapObjects/CGMarket.h
  267. ${MAIN_LIB_DIR}/mapObjects/CGPandoraBox.h
  268. ${MAIN_LIB_DIR}/mapObjects/CGTownInstance.h
  269. ${MAIN_LIB_DIR}/mapObjects/CObjectClassesHandler.h
  270. ${MAIN_LIB_DIR}/mapObjects/CObjectHandler.h
  271. ${MAIN_LIB_DIR}/mapObjects/CommonConstructors.h
  272. ${MAIN_LIB_DIR}/mapObjects/CQuest.h
  273. ${MAIN_LIB_DIR}/mapObjects/CRewardableConstructor.h
  274. ${MAIN_LIB_DIR}/mapObjects/CRewardableObject.h
  275. ${MAIN_LIB_DIR}/mapObjects/JsonRandom.h
  276. ${MAIN_LIB_DIR}/mapObjects/MapObjects.h
  277. ${MAIN_LIB_DIR}/mapObjects/MiscObjects.h
  278. ${MAIN_LIB_DIR}/mapObjects/ObjectTemplate.h
  279. ${MAIN_LIB_DIR}/mapping/CCampaignHandler.h
  280. ${MAIN_LIB_DIR}/mapping/CDrawRoadsOperation.h
  281. ${MAIN_LIB_DIR}/mapping/CMapDefines.h
  282. ${MAIN_LIB_DIR}/mapping/CMapEditManager.h
  283. ${MAIN_LIB_DIR}/mapping/CMap.h
  284. ${MAIN_LIB_DIR}/mapping/CMapInfo.h
  285. ${MAIN_LIB_DIR}/mapping/CMapOperation.h
  286. ${MAIN_LIB_DIR}/mapping/CMapService.h
  287. ${MAIN_LIB_DIR}/mapping/MapEditUtils.h
  288. ${MAIN_LIB_DIR}/mapping/MapFormatH3M.h
  289. ${MAIN_LIB_DIR}/mapping/MapFormatJson.h
  290. ${MAIN_LIB_DIR}/registerTypes/RegisterTypes.h
  291. ${MAIN_LIB_DIR}/rmg/RmgArea.h
  292. ${MAIN_LIB_DIR}/rmg/RmgObject.h
  293. ${MAIN_LIB_DIR}/rmg/RmgPath.h
  294. ${MAIN_LIB_DIR}/rmg/CMapGenerator.h
  295. ${MAIN_LIB_DIR}/rmg/CMapGenOptions.h
  296. ${MAIN_LIB_DIR}/rmg/CRmgTemplate.h
  297. ${MAIN_LIB_DIR}/rmg/CRmgTemplateStorage.h
  298. ${MAIN_LIB_DIR}/rmg/CZonePlacer.h
  299. ${MAIN_LIB_DIR}/rmg/TileInfo.h
  300. ${MAIN_LIB_DIR}/rmg/Zone.h
  301. ${MAIN_LIB_DIR}/rmg/Functions.h
  302. ${MAIN_LIB_DIR}/rmg/ObjectManager.h
  303. ${MAIN_LIB_DIR}/rmg/RoadPlacer.h
  304. ${MAIN_LIB_DIR}/rmg/TreasurePlacer.h
  305. ${MAIN_LIB_DIR}/rmg/RmgMap.h
  306. ${MAIN_LIB_DIR}/rmg/ConnectionsPlacer.h
  307. ${MAIN_LIB_DIR}/rmg/WaterAdopter.h
  308. ${MAIN_LIB_DIR}/rmg/TownPlacer.h
  309. ${MAIN_LIB_DIR}/rmg/WaterProxy.h
  310. ${MAIN_LIB_DIR}/rmg/WaterRoutes.h
  311. ${MAIN_LIB_DIR}/rmg/RockPlacer.h
  312. ${MAIN_LIB_DIR}/rmg/ObstaclePlacer.h
  313. ${MAIN_LIB_DIR}/rmg/RiverPlacer.h
  314. ${MAIN_LIB_DIR}/rmg/TerrainPainter.h
  315. ${MAIN_LIB_DIR}/rmg/float3.h
  316. ${MAIN_LIB_DIR}/serializer/BinaryDeserializer.h
  317. ${MAIN_LIB_DIR}/serializer/BinarySerializer.h
  318. ${MAIN_LIB_DIR}/serializer/CLoadIntegrityValidator.h
  319. ${MAIN_LIB_DIR}/serializer/CMemorySerializer.h
  320. ${MAIN_LIB_DIR}/serializer/Connection.h
  321. ${MAIN_LIB_DIR}/serializer/CSerializer.h
  322. ${MAIN_LIB_DIR}/serializer/CTypeList.h
  323. ${MAIN_LIB_DIR}/serializer/JsonDeserializer.h
  324. ${MAIN_LIB_DIR}/serializer/JsonSerializeFormat.h
  325. ${MAIN_LIB_DIR}/serializer/JsonSerializer.h
  326. ${MAIN_LIB_DIR}/serializer/JsonUpdater.h
  327. ${MAIN_LIB_DIR}/serializer/Cast.h
  328. ${MAIN_LIB_DIR}/spells/AbilityCaster.h
  329. ${MAIN_LIB_DIR}/spells/AdventureSpellMechanics.h
  330. ${MAIN_LIB_DIR}/spells/BattleSpellMechanics.h
  331. ${MAIN_LIB_DIR}/spells/BonusCaster.h
  332. ${MAIN_LIB_DIR}/spells/CSpellHandler.h
  333. ${MAIN_LIB_DIR}/spells/ISpellMechanics.h
  334. ${MAIN_LIB_DIR}/spells/Problem.h
  335. ${MAIN_LIB_DIR}/spells/ProxyCaster.h
  336. ${MAIN_LIB_DIR}/spells/TargetCondition.h
  337. ${MAIN_LIB_DIR}/spells/ViewSpellInt.h
  338. ${MAIN_LIB_DIR}/spells/effects/Catapult.h
  339. ${MAIN_LIB_DIR}/spells/effects/Clone.h
  340. ${MAIN_LIB_DIR}/spells/effects/Damage.h
  341. ${MAIN_LIB_DIR}/spells/effects/Dispel.h
  342. ${MAIN_LIB_DIR}/spells/effects/Effect.h
  343. ${MAIN_LIB_DIR}/spells/effects/Effects.h
  344. ${MAIN_LIB_DIR}/spells/effects/EffectsFwd.h
  345. ${MAIN_LIB_DIR}/spells/effects/Heal.h
  346. ${MAIN_LIB_DIR}/spells/effects/LocationEffect.h
  347. ${MAIN_LIB_DIR}/spells/effects/Obstacle.h
  348. ${MAIN_LIB_DIR}/spells/effects/Registry.h
  349. ${MAIN_LIB_DIR}/spells/effects/UnitEffect.h
  350. ${MAIN_LIB_DIR}/spells/effects/Summon.h
  351. ${MAIN_LIB_DIR}/spells/effects/Teleport.h
  352. ${MAIN_LIB_DIR}/spells/effects/Timed.h
  353. ${MAIN_LIB_DIR}/spells/effects/RemoveObstacle.h
  354. ${MAIN_LIB_DIR}/spells/effects/Sacrifice.h
  355. ${MAIN_LIB_DIR}/AI_Base.h
  356. ${MAIN_LIB_DIR}/BattleFieldHandler.h
  357. ${MAIN_LIB_DIR}/CAndroidVMHelper.h
  358. ${MAIN_LIB_DIR}/CArtHandler.h
  359. ${MAIN_LIB_DIR}/CBonusTypeHandler.h
  360. ${MAIN_LIB_DIR}/CBuildingHandler.h
  361. ${MAIN_LIB_DIR}/CConfigHandler.h
  362. ${MAIN_LIB_DIR}/CConsoleHandler.h
  363. ${MAIN_LIB_DIR}/CCreatureHandler.h
  364. ${MAIN_LIB_DIR}/CCreatureSet.h
  365. ${MAIN_LIB_DIR}/CGameInfoCallback.h
  366. ${MAIN_LIB_DIR}/CGameInterface.h
  367. ${MAIN_LIB_DIR}/CGameStateFwd.h
  368. ${MAIN_LIB_DIR}/CGameState.h
  369. ${MAIN_LIB_DIR}/CGeneralTextHandler.h
  370. ${MAIN_LIB_DIR}/CHeroHandler.h
  371. ${MAIN_LIB_DIR}/CModHandler.h
  372. ${MAIN_LIB_DIR}/CondSh.h
  373. ${MAIN_LIB_DIR}/ConstTransitivePtr.h
  374. ${MAIN_LIB_DIR}/CPathfinder.h
  375. ${MAIN_LIB_DIR}/CPlayerState.h
  376. ${MAIN_LIB_DIR}/CRandomGenerator.h
  377. ${MAIN_LIB_DIR}/CScriptingModule.h
  378. ${MAIN_LIB_DIR}/CSkillHandler.h
  379. ${MAIN_LIB_DIR}/CSoundBase.h
  380. ${MAIN_LIB_DIR}/CStack.h
  381. ${MAIN_LIB_DIR}/CStopWatch.h
  382. ${MAIN_LIB_DIR}/CThreadHelper.h
  383. ${MAIN_LIB_DIR}/CTownHandler.h
  384. ${MAIN_LIB_DIR}/FunctionList.h
  385. ${MAIN_LIB_DIR}/GameConstants.h
  386. ${MAIN_LIB_DIR}/HeroBonus.h
  387. ${MAIN_LIB_DIR}/IBonusTypeHandler.h
  388. ${MAIN_LIB_DIR}/IGameCallback.h
  389. ${MAIN_LIB_DIR}/IGameEventsReceiver.h
  390. ${MAIN_LIB_DIR}/IHandlerBase.h
  391. ${MAIN_LIB_DIR}/int3.h
  392. ${MAIN_LIB_DIR}/Interprocess.h
  393. ${MAIN_LIB_DIR}/JsonDetail.h
  394. ${MAIN_LIB_DIR}/JsonNode.h
  395. ${MAIN_LIB_DIR}/LoadProgress.h
  396. ${MAIN_LIB_DIR}/LogicalExpression.h
  397. ${MAIN_LIB_DIR}/NetPacksBase.h
  398. ${MAIN_LIB_DIR}/NetPacks.h
  399. ${MAIN_LIB_DIR}/NetPacksLobby.h
  400. ${MAIN_LIB_DIR}/ObstacleHandler.h
  401. ${MAIN_LIB_DIR}/PathfinderUtil.h
  402. ${MAIN_LIB_DIR}/ResourceSet.h
  403. ${MAIN_LIB_DIR}/ScriptHandler.h
  404. ${MAIN_LIB_DIR}/ScopeGuard.h
  405. ${MAIN_LIB_DIR}/StartInfo.h
  406. ${MAIN_LIB_DIR}/StringConstants.h
  407. ${MAIN_LIB_DIR}/Terrain.h
  408. ${MAIN_LIB_DIR}/UnlockGuard.h
  409. ${MAIN_LIB_DIR}/VCMIDirs.h
  410. ${MAIN_LIB_DIR}/vcmi_endian.h
  411. ${MAIN_LIB_DIR}/VCMI_Lib.h
  412. )
  413. assign_source_group(${lib_SRCS} ${lib_HEADERS})
  414. add_library(${TARGET_NAME} ${LIBRARY_TYPE} ${lib_SRCS} ${lib_HEADERS})
  415. set_target_properties(${TARGET_NAME} PROPERTIES COMPILE_DEFINITIONS "VCMI_DLL=1")
  416. target_link_libraries(${TARGET_NAME} PUBLIC
  417. minizip::minizip ZLIB::ZLIB
  418. ${SYSTEM_LIBS} Boost::boost Boost::thread Boost::filesystem Boost::program_options Boost::locale Boost::date_time
  419. )
  420. if(APPLE_IOS)
  421. target_link_libraries(${TARGET_NAME} PUBLIC iOS_utils)
  422. endif()
  423. target_include_directories(${TARGET_NAME}
  424. PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
  425. PUBLIC ${MAIN_LIB_DIR}/..
  426. PUBLIC ${MAIN_LIB_DIR}/../include
  427. PUBLIC ${MAIN_LIB_DIR}
  428. PRIVATE ${SDL2_INCLUDE_DIR}
  429. )
  430. if(WIN32)
  431. set_target_properties(${TARGET_NAME}
  432. PROPERTIES
  433. OUTPUT_NAME "VCMI_lib"
  434. PROJECT_LABEL "VCMI_lib"
  435. )
  436. endif()
  437. if(ANDROID)
  438. return()
  439. endif()
  440. vcmi_set_output_dir(${TARGET_NAME} "")
  441. enable_pch(${TARGET_NAME})
  442. # We want to deploy assets into build directory for easier debugging without install
  443. if(NOT APPLE_IOS)
  444. add_custom_command(TARGET ${TARGET_NAME} POST_BUILD
  445. COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/config
  446. COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/Mods
  447. COMMAND ${CMAKE_COMMAND} -E copy_directory ${MAIN_LIB_DIR}/../config ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/config
  448. COMMAND ${CMAKE_COMMAND} -E copy_directory ${MAIN_LIB_DIR}/../Mods ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/Mods
  449. )
  450. endif()
  451. # Update version before vcmi compiling
  452. if(TARGET update_version)
  453. add_dependencies(${TARGET_NAME} update_version)
  454. endif()
  455. if("${LIBRARY_TYPE}" STREQUAL SHARED)
  456. install(TARGETS ${TARGET_NAME} RUNTIME DESTINATION ${LIB_DIR} LIBRARY DESTINATION ${LIB_DIR})
  457. endif()
  458. if(APPLE_IOS AND NOT USING_CONAN)
  459. get_target_property(LINKED_LIBS ${TARGET_NAME} LINK_LIBRARIES)
  460. foreach(LINKED_LIB IN LISTS LINKED_LIBS)
  461. if(NOT TARGET ${LINKED_LIB})
  462. if(LINKED_LIB MATCHES "\\${CMAKE_SHARED_LIBRARY_SUFFIX}$")
  463. install(FILES ${LINKED_LIB} DESTINATION ${LIB_DIR})
  464. endif()
  465. continue()
  466. endif()
  467. get_target_property(LIB_TYPE ${LINKED_LIB} TYPE)
  468. if(NOT LIB_TYPE STREQUAL "SHARED_LIBRARY")
  469. continue()
  470. endif()
  471. get_target_property(_aliased ${LINKED_LIB} ALIASED_TARGET)
  472. if(_aliased)
  473. set(LINKED_LIB_REAL ${_aliased})
  474. else()
  475. set(LINKED_LIB_REAL ${LINKED_LIB})
  476. endif()
  477. get_target_property(_imported ${LINKED_LIB_REAL} IMPORTED)
  478. if(_imported)
  479. set(INSTALL_TYPE IMPORTED_RUNTIME_ARTIFACTS)
  480. get_target_property(BOOST_DEPENDENCIES ${LINKED_LIB_REAL} INTERFACE_LINK_LIBRARIES)
  481. foreach(BOOST_DEPENDENCY IN LISTS BOOST_DEPENDENCIES)
  482. get_target_property(BOOST_DEPENDENCY_TYPE ${BOOST_DEPENDENCY} TYPE)
  483. if(BOOST_DEPENDENCY_TYPE STREQUAL "SHARED_LIBRARY")
  484. install(IMPORTED_RUNTIME_ARTIFACTS ${BOOST_DEPENDENCY} LIBRARY DESTINATION ${LIB_DIR})
  485. endif()
  486. endforeach()
  487. else()
  488. set(INSTALL_TYPE TARGETS)
  489. endif()
  490. install(${INSTALL_TYPE} ${LINKED_LIB_REAL} LIBRARY DESTINATION ${LIB_DIR})
  491. endforeach()
  492. endif()
  493. endmacro()