CMakeLists.txt 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. set(editor_SRCS
  2. StdInc.cpp
  3. main.cpp
  4. mainwindow.cpp
  5. BitmapHandler.cpp
  6. maphandler.cpp
  7. Animation.cpp
  8. graphics.cpp
  9. windownewmap.cpp
  10. generatorprogress.cpp
  11. mapview.cpp
  12. objectbrowser.cpp
  13. mapsettings/abstractsettings.cpp
  14. mapsettings/mapsettings.cpp
  15. mapsettings/generalsettings.cpp
  16. mapsettings/modsettings.cpp
  17. mapsettings/timedevent.cpp
  18. mapsettings/victoryconditions.cpp
  19. mapsettings/loseconditions.cpp
  20. mapsettings/eventsettings.cpp
  21. mapsettings/rumorsettings.cpp
  22. mapsettings/translations.cpp
  23. playersettings.cpp
  24. playerparams.cpp
  25. scenelayer.cpp
  26. mapcontroller.cpp
  27. validator.cpp
  28. inspector/inspector.cpp
  29. inspector/townbuildingswidget.cpp
  30. inspector/towneventdialog.cpp
  31. inspector/towneventswidget.cpp
  32. inspector/townspellswidget.cpp
  33. inspector/armywidget.cpp
  34. inspector/messagewidget.cpp
  35. inspector/rewardswidget.cpp
  36. inspector/questwidget.cpp
  37. inspector/heroartifactswidget.cpp
  38. inspector/artifactwidget.cpp
  39. inspector/heroskillswidget.cpp
  40. inspector/herospellwidget.cpp
  41. inspector/PickObjectDelegate.cpp
  42. inspector/portraitwidget.cpp
  43. resourceExtractor/ResourceConverter.cpp
  44. )
  45. set(editor_HEADERS
  46. StdInc.h
  47. mainwindow.h
  48. BitmapHandler.h
  49. maphandler.h
  50. Animation.h
  51. graphics.h
  52. windownewmap.h
  53. generatorprogress.h
  54. mapview.h
  55. objectbrowser.h
  56. mapsettings/abstractsettings.h
  57. mapsettings/mapsettings.h
  58. mapsettings/generalsettings.h
  59. mapsettings/modsettings.h
  60. mapsettings/timedevent.h
  61. mapsettings/victoryconditions.h
  62. mapsettings/loseconditions.h
  63. mapsettings/eventsettings.h
  64. mapsettings/rumorsettings.h
  65. mapsettings/translations.h
  66. playersettings.h
  67. playerparams.h
  68. scenelayer.h
  69. mapcontroller.h
  70. validator.h
  71. inspector/inspector.h
  72. inspector/townbuildingswidget.h
  73. inspector/towneventdialog.h
  74. inspector/towneventswidget.h
  75. inspector/townspellswidget.h
  76. inspector/armywidget.h
  77. inspector/messagewidget.h
  78. inspector/rewardswidget.h
  79. inspector/questwidget.h
  80. inspector/heroartifactswidget.h
  81. inspector/artifactwidget.h
  82. inspector/heroskillswidget.h
  83. inspector/herospellwidget.h
  84. inspector/PickObjectDelegate.h
  85. inspector/portraitwidget.h
  86. inspector/baseinspectoritemdelegate.h
  87. resourceExtractor/ResourceConverter.h
  88. mapeditorroles.h
  89. )
  90. set(editor_FORMS
  91. mainwindow.ui
  92. windownewmap.ui
  93. generatorprogress.ui
  94. mapsettings/mapsettings.ui
  95. mapsettings/generalsettings.ui
  96. mapsettings/modsettings.ui
  97. mapsettings/timedevent.ui
  98. mapsettings/victoryconditions.ui
  99. mapsettings/loseconditions.ui
  100. mapsettings/eventsettings.ui
  101. mapsettings/rumorsettings.ui
  102. mapsettings/translations.ui
  103. playersettings.ui
  104. playerparams.ui
  105. validator.ui
  106. inspector/townbuildingswidget.ui
  107. inspector/towneventdialog.ui
  108. inspector/towneventswidget.ui
  109. inspector/townspellswidget.ui
  110. inspector/armywidget.ui
  111. inspector/messagewidget.ui
  112. inspector/rewardswidget.ui
  113. inspector/questwidget.ui
  114. inspector/heroartifactswidget.ui
  115. inspector/artifactwidget.ui
  116. inspector/heroskillswidget.ui
  117. inspector/herospellwidget.ui
  118. inspector/portraitwidget.ui
  119. )
  120. set(editor_RESOURCES
  121. resources.qrc
  122. )
  123. set(translationsDir "translation")
  124. set(editor_TS
  125. "${translationsDir}/chinese.ts"
  126. "${translationsDir}/czech.ts"
  127. "${translationsDir}/english.ts"
  128. "${translationsDir}/french.ts"
  129. "${translationsDir}/german.ts"
  130. "${translationsDir}/polish.ts"
  131. "${translationsDir}/portuguese.ts"
  132. "${translationsDir}/russian.ts"
  133. "${translationsDir}/spanish.ts"
  134. "${translationsDir}/ukrainian.ts"
  135. "${translationsDir}/vietnamese.ts"
  136. )
  137. if(ENABLE_TRANSLATIONS)
  138. if(TARGET Qt5::Core)
  139. file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${translationsDir}")
  140. set_source_files_properties(${editor_TS} PROPERTIES OUTPUT_LOCATION "${translationsDir}")
  141. qt5_add_translation(editor_QM ${editor_TS})
  142. set(translationsResource "${CMAKE_CURRENT_BINARY_DIR}/translations.qrc")
  143. list(APPEND editor_RESOURCES "${translationsResource}")
  144. set(rccQmFiles "")
  145. foreach(qmFile ${editor_QM})
  146. string(APPEND rccQmFiles "<file>${qmFile}</file>\n")
  147. endforeach()
  148. file(WRITE "${translationsResource}"
  149. "<!DOCTYPE RCC>
  150. <RCC version=\"1.0\">
  151. <qresource prefix=\"/\">
  152. ${rccQmFiles}
  153. </qresource>
  154. </RCC>"
  155. )
  156. endif()
  157. endif()
  158. if(WIN32)
  159. set(editor_ICON mapeditor.rc)
  160. endif()
  161. assign_source_group(${editor_SRCS} ${editor_HEADERS} ${editor_RESOURCES} ${editor_TS} ${editor_ICON})
  162. set(CMAKE_AUTOMOC ON)
  163. set(CMAKE_AUTOUIC ON)
  164. set(CMAKE_AUTORCC ON)
  165. if(POLICY CMP0071)
  166. cmake_policy(SET CMP0071 NEW)
  167. endif()
  168. # As moc files are generated in the binary dir, tell CMake
  169. # to always look for includes there:
  170. set(CMAKE_INCLUDE_CURRENT_DIR ON)
  171. if(ENABLE_SINGLE_APP_BUILD OR ANDROID)
  172. add_library(vcmieditor OBJECT ${editor_QM})
  173. else()
  174. add_executable(vcmieditor WIN32 ${editor_QM} ${editor_SRCS} ${editor_HEADERS} ${editor_UI_HEADERS} ${editor_ICON})
  175. endif()
  176. if(ENABLE_TRANSLATIONS)
  177. if(TARGET Qt6::Core)
  178. qt_add_translations(vcmieditor
  179. TS_FILES ${editor_TS}
  180. RESOURCE_PREFIX "/${translationsDir}"
  181. INCLUDE_DIRECTORIES
  182. ${CMAKE_CURRENT_BINARY_DIR})
  183. endif()
  184. endif()
  185. target_sources(vcmieditor PRIVATE
  186. ${editor_SRCS}
  187. ${editor_HEADERS}
  188. ${editor_FORMS}
  189. ${editor_RESOURCES}
  190. )
  191. if(WIN32)
  192. set_target_properties(vcmieditor
  193. PROPERTIES
  194. OUTPUT_NAME "VCMI_mapeditor"
  195. PROJECT_LABEL "VCMI_mapeditor"
  196. )
  197. # FIXME: Can't to get CMP0020 working with Vcpkg and CMake 3.8.2
  198. # So far I tried:
  199. # - cmake_minimum_required set to 2.8.11 globally and in this file
  200. # - cmake_policy in all possible places
  201. # - used NO_POLICY_SCOPE to make sure no other parts reset policies
  202. # Still nothing worked, warning kept appearing and WinMain didn't link automatically
  203. target_link_libraries(vcmieditor Qt${QT_VERSION_MAJOR}::WinMain)
  204. endif()
  205. if(APPLE)
  206. # This makes Xcode project prettier by moving mapeditor_autogen directory into vcmiclient subfolder
  207. set_property(GLOBAL PROPERTY AUTOGEN_TARGETS_FOLDER vcmieditor)
  208. endif()
  209. # Qt defines 'emit' as macros, which conflicts with TBB definition of method with same name
  210. target_compile_definitions(vcmieditor PRIVATE QT_NO_EMIT)
  211. if(ENABLE_STATIC_LIBS OR NOT (ENABLE_EDITOR AND ENABLE_LAUNCHER))
  212. target_compile_definitions(vcmieditor PRIVATE VCMIQT_STATIC)
  213. endif()
  214. target_link_libraries(vcmieditor vcmi vcmiqt Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Network)
  215. target_include_directories(vcmieditor
  216. PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
  217. )
  218. vcmi_set_output_dir(vcmieditor "")
  219. enable_pch(vcmieditor)
  220. install(TARGETS vcmieditor DESTINATION ${BIN_DIR})
  221. # Install icons and desktop file on Linux
  222. if(NOT WIN32 AND NOT APPLE)
  223. foreach(iconSize 32 48 64 128 256)
  224. install(FILES "icons/mapeditor.${iconSize}x${iconSize}.png"
  225. DESTINATION "share/icons/hicolor/${iconSize}x${iconSize}/apps"
  226. RENAME vcmieditor.png
  227. )
  228. endforeach()
  229. install(FILES "vcmieditor.desktop" DESTINATION share/applications)
  230. endif()