CMakeLists.txt 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. set(launcher_SRCS
  2. StdInc.cpp
  3. aboutProject/aboutproject_moc.cpp
  4. modManager/cdownloadmanager_moc.cpp
  5. modManager/cmodlist.cpp
  6. modManager/cmodlistmodel_moc.cpp
  7. modManager/cmodlistview_moc.cpp
  8. modManager/cmodmanager.cpp
  9. modManager/imageviewer_moc.cpp
  10. settingsView/csettingsview_moc.cpp
  11. firstLaunch/firstlaunch_moc.cpp
  12. main.cpp
  13. mainwindow_moc.cpp
  14. languages.cpp
  15. launcherdirs.cpp
  16. jsonutils.cpp
  17. updatedialog_moc.cpp
  18. lobby/lobby.cpp
  19. lobby/lobby_moc.cpp
  20. lobby/lobbyroomrequest_moc.cpp
  21. lobby/chat_moc.cpp
  22. )
  23. set(launcher_HEADERS
  24. StdInc.h
  25. aboutProject/aboutproject_moc.h
  26. modManager/cdownloadmanager_moc.h
  27. modManager/cmodlist.h
  28. modManager/cmodlistmodel_moc.h
  29. modManager/cmodlistview_moc.h
  30. modManager/cmodmanager.h
  31. modManager/imageviewer_moc.h
  32. settingsView/csettingsview_moc.h
  33. firstLaunch/firstlaunch_moc.h
  34. mainwindow_moc.h
  35. languages.h
  36. launcherdirs.h
  37. jsonutils.h
  38. updatedialog_moc.h
  39. lobby/lobby.h
  40. lobby/lobby_moc.h
  41. lobby/lobbyroomrequest_moc.h
  42. lobby/chat_moc.h
  43. main.h
  44. )
  45. set(launcher_FORMS
  46. aboutProject/aboutproject_moc.ui
  47. modManager/cmodlistview_moc.ui
  48. modManager/imageviewer_moc.ui
  49. settingsView/csettingsview_moc.ui
  50. firstLaunch/firstlaunch_moc.ui
  51. mainwindow_moc.ui
  52. updatedialog_moc.ui
  53. lobby/lobby_moc.ui
  54. lobby/lobbyroomrequest_moc.ui
  55. lobby/chat_moc.ui
  56. )
  57. set(launcher_TS
  58. translation/chinese.ts
  59. translation/czech.ts
  60. translation/english.ts
  61. translation/french.ts
  62. translation/german.ts
  63. translation/polish.ts
  64. translation/russian.ts
  65. translation/spanish.ts
  66. translation/ukrainian.ts
  67. translation/vietnamese.ts
  68. )
  69. if(APPLE_IOS)
  70. list(APPEND launcher_SRCS
  71. ios/main.m
  72. )
  73. endif()
  74. assign_source_group(${launcher_SRCS} ${launcher_HEADERS} VCMI_launcher.rc)
  75. # Tell CMake to run moc when necessary:
  76. set(CMAKE_AUTOMOC ON)
  77. if(POLICY CMP0071)
  78. cmake_policy(SET CMP0071 NEW)
  79. endif()
  80. # As moc files are generated in the binary dir, tell CMake
  81. # to always look for includes there:
  82. set(CMAKE_INCLUDE_CURRENT_DIR ON)
  83. if(TARGET Qt6::Core)
  84. qt_wrap_ui(launcher_UI_HEADERS ${launcher_FORMS})
  85. else()
  86. qt5_wrap_ui(launcher_UI_HEADERS ${launcher_FORMS})
  87. if(ENABLE_TRANSLATIONS)
  88. set_source_files_properties(${launcher_TS} PROPERTIES OUTPUT_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/translation)
  89. qt5_add_translation( launcher_QM ${launcher_TS} )
  90. endif()
  91. endif()
  92. if(WIN32)
  93. set(launcher_ICON VCMI_launcher.rc)
  94. endif()
  95. if(ENABLE_SINGLE_APP_BUILD)
  96. add_library(vcmilauncher STATIC ${launcher_QM} ${launcher_SRCS} ${launcher_HEADERS} ${launcher_UI_HEADERS})
  97. else()
  98. add_executable(vcmilauncher WIN32 ${launcher_QM} ${launcher_SRCS} ${launcher_HEADERS} ${launcher_UI_HEADERS} ${launcher_ICON})
  99. endif()
  100. if(TARGET Qt6::Core)
  101. if(ENABLE_TRANSLATIONS)
  102. set_source_files_properties(${launcher_TS} PROPERTIES OUTPUT_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/translation)
  103. qt_add_translations(vcmilauncher
  104. TS_FILES ${launcher_TS}
  105. QM_FILES_OUTPUT_VARIABLE launcher_QM
  106. INCLUDE_DIRECTORIES
  107. ${CMAKE_CURRENT_BINARY_DIR})
  108. endif()
  109. endif()
  110. if(WIN32)
  111. set_target_properties(vcmilauncher
  112. PROPERTIES
  113. OUTPUT_NAME "VCMI_launcher"
  114. PROJECT_LABEL "VCMI_launcher"
  115. )
  116. # FIXME: Can't to get CMP0020 working with Vcpkg and CMake 3.8.2
  117. # So far I tried:
  118. # - cmake_minimum_required set to 2.8.11 globally and in this file
  119. # - cmake_policy in all possible places
  120. # - used NO_POLICY_SCOPE to make sure no other parts reset policies
  121. # Still nothing worked, warning kept appearing and WinMain didn't link automatically
  122. target_link_libraries(vcmilauncher Qt${QT_VERSION_MAJOR}::WinMain)
  123. endif()
  124. if(APPLE)
  125. # This makes Xcode project prettier by moving vcmilauncher_autogen directory into vcmiclient subfolder
  126. set_property(GLOBAL PROPERTY AUTOGEN_TARGETS_FOLDER vcmilauncher)
  127. endif()
  128. if (NOT APPLE_IOS AND NOT ANDROID)
  129. target_link_libraries(vcmilauncher SDL2::SDL2)
  130. endif()
  131. target_link_libraries(vcmilauncher ${VCMI_LIB_TARGET} Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Network)
  132. target_include_directories(vcmilauncher
  133. PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
  134. )
  135. vcmi_set_output_dir(vcmilauncher "")
  136. enable_pch(vcmilauncher)
  137. if(APPLE_IOS)
  138. set(RESOURCES_DESTINATION ${DATA_DIR})
  139. # TODO: remove after fixing Conan's Qt recipe
  140. if(XCODE_VERSION VERSION_GREATER_EQUAL 14.0)
  141. target_link_libraries(vcmilauncher "-framework IOKit")
  142. endif()
  143. # workaround https://github.com/conan-io/conan-center-index/issues/13332
  144. if(USING_CONAN)
  145. file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/QIOSIntegrationPlugin.h
  146. "#include <QtPlugin>\nQ_IMPORT_PLUGIN(QIOSIntegrationPlugin)"
  147. )
  148. # target_include_directories(vcmilauncher PRIVATE ${CMAKE_BINARY_DIR})
  149. target_link_libraries(vcmilauncher
  150. Qt${QT_VERSION_MAJOR}::QIOSIntegrationPlugin
  151. qt::QIOSIntegrationPlugin
  152. )
  153. endif()
  154. else()
  155. set(RESOURCES_DESTINATION ${DATA_DIR}/launcher)
  156. # Link to build directory for easier debugging
  157. add_custom_command(TARGET vcmilauncher POST_BUILD
  158. COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/launcher
  159. COMMAND ${CMAKE_COMMAND} -P ${CMAKE_SOURCE_DIR}/cmake_modules/create_link.cmake ${CMAKE_SOURCE_DIR}/launcher/icons ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/launcher/icons
  160. COMMAND ${CMAKE_COMMAND} -P ${CMAKE_SOURCE_DIR}/cmake_modules/create_link.cmake ${CMAKE_CURRENT_BINARY_DIR}/translation ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/launcher/translation
  161. )
  162. install(TARGETS vcmilauncher DESTINATION ${BIN_DIR})
  163. # Install icons and desktop file on Linux
  164. if(NOT WIN32 AND NOT APPLE)
  165. install(FILES "vcmilauncher.desktop" DESTINATION share/applications)
  166. install(FILES "eu.vcmi.VCMI.metainfo.xml" DESTINATION share/metainfo)
  167. endif()
  168. endif()
  169. install(DIRECTORY icons DESTINATION ${RESOURCES_DESTINATION})
  170. if(ENABLE_TRANSLATIONS)
  171. install(FILES ${launcher_QM} DESTINATION ${RESOURCES_DESTINATION}/translation)
  172. endif()