CMakeLists.txt 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. set(launcher_modmanager_SRCS
  2. modManager/cdownloadmanager_moc.cpp
  3. modManager/cmodlist.cpp
  4. modManager/cmodlistmodel_moc.cpp
  5. modManager/cmodlistview_moc.cpp
  6. modManager/cmodmanager.cpp
  7. modManager/imageviewer_moc.cpp
  8. )
  9. set(launcher_modmanager_HEADERS
  10. modManager/cdownloadmanager_moc.h
  11. modManager/cmodlist.h
  12. modManager/cmodlistmodel_moc.h
  13. modManager/cmodlistview_moc.h
  14. modManager/cmodmanager.h
  15. modManager/imageviewer_moc.h
  16. )
  17. set(launcher_settingsview_SRCS
  18. settingsView/csettingsview_moc.cpp
  19. )
  20. set(launcher_settingsview_HEADERS
  21. settingsView/csettingsview_moc.h
  22. )
  23. set(launcher_SRCS
  24. StdInc.cpp
  25. ${launcher_modmanager_SRCS}
  26. ${launcher_settingsview_SRCS}
  27. main.cpp
  28. mainwindow_moc.cpp
  29. launcherdirs.cpp
  30. jsonutils.cpp
  31. updatedialog_moc.cpp
  32. )
  33. set(launcher_HEADERS
  34. StdInc.h
  35. ${launcher_modmanager_HEADERS}
  36. ${launcher_settingsview_HEADERS}
  37. mainwindow_moc.h
  38. launcherdirs.h
  39. jsonutils.h
  40. updatedialog_moc.h
  41. )
  42. set(launcher_FORMS
  43. modManager/cmodlistview_moc.ui
  44. modManager/imageviewer_moc.ui
  45. settingsView/csettingsview_moc.ui
  46. mainwindow_moc.ui
  47. updatedialog_moc.ui
  48. )
  49. if(APPLE_IOS)
  50. set(launcher_SRCS ${launcher_SRCS} ios/mainwindow_moc.mm)
  51. endif()
  52. assign_source_group(${launcher_SRCS} ${launcher_HEADERS} VCMI_launcher.rc)
  53. # Tell CMake to run moc when necessary:
  54. set(CMAKE_AUTOMOC ON)
  55. if(POLICY CMP0071)
  56. cmake_policy(SET CMP0071 NEW)
  57. endif()
  58. # As moc files are generated in the binary dir, tell CMake
  59. # to always look for includes there:
  60. set(CMAKE_INCLUDE_CURRENT_DIR ON)
  61. if(TARGET Qt6::Core)
  62. qt_wrap_ui(launcher_UI_HEADERS ${launcher_FORMS})
  63. else()
  64. qt5_wrap_ui(launcher_UI_HEADERS ${launcher_FORMS})
  65. endif()
  66. if(WIN32)
  67. set(launcher_ICON VCMI_launcher.rc)
  68. endif()
  69. add_executable(vcmilauncher WIN32 ${launcher_SRCS} ${launcher_HEADERS} ${launcher_UI_HEADERS} ${launcher_ICON})
  70. if(WIN32)
  71. set_target_properties(vcmilauncher
  72. PROPERTIES
  73. OUTPUT_NAME "VCMI_launcher"
  74. PROJECT_LABEL "VCMI_launcher"
  75. )
  76. # FIXME: Can't to get CMP0020 working with Vcpkg and CMake 3.8.2
  77. # So far I tried:
  78. # - cmake_minimum_required set to 2.8.11 globally and in this file
  79. # - cmake_policy in all possible places
  80. # - used NO_POLICY_SCOPE to make sure no other parts reset policies
  81. # Still nothing worked, warning kept appearing and WinMain didn't link automatically
  82. target_link_libraries(vcmilauncher Qt${QT_VERSION_MAJOR}::WinMain)
  83. endif()
  84. if(APPLE)
  85. # This makes Xcode project prettier by moving vcmilauncher_autogen directory into vcmiclient subfolder
  86. set_property(GLOBAL PROPERTY AUTOGEN_TARGETS_FOLDER vcmilauncher)
  87. endif()
  88. if(APPLE_IOS)
  89. set(CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS} "-Wl,-e,_qt_main_wrapper")
  90. set(ENTITLEMENTS_OUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/VCMI.entitlements)
  91. configure_file(ios/Entitlements.in ${ENTITLEMENTS_OUT_PATH} @ONLY)
  92. set_target_properties(vcmilauncher PROPERTIES
  93. MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_LIST_DIR}/ios/Info.plist"
  94. XCODE_ATTRIBUTE_LD_RUNPATH_SEARCH_PATHS "@executable_path/Frameworks"
  95. XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED YES
  96. XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME AppIcon
  97. XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS ${ENTITLEMENTS_OUT_PATH}
  98. )
  99. target_sources(vcmilauncher PRIVATE ${CMAKE_SOURCE_DIR}/client/LaunchScreen.storyboard)
  100. set_source_files_properties(${CMAKE_SOURCE_DIR}/client/LaunchScreen.storyboard PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
  101. target_sources(vcmilauncher PRIVATE ios/Images.xcassets)
  102. set_source_files_properties(ios/Images.xcassets PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
  103. endif()
  104. target_link_libraries(vcmilauncher vcmi Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Network)
  105. target_include_directories(vcmilauncher
  106. PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
  107. )
  108. vcmi_set_output_dir(vcmilauncher "")
  109. enable_pch(vcmilauncher)
  110. if(APPLE_IOS)
  111. install(DIRECTORY icons DESTINATION ${DATA_DIR})
  112. add_custom_command(TARGET vcmilauncher POST_BUILD
  113. COMMAND ${CMAKE_COMMAND} --install "${CMAKE_BINARY_DIR}" --config "$<CONFIG>" --prefix "$<TARGET_BUNDLE_CONTENT_DIR:vcmilauncher>"
  114. COMMAND ${CMAKE_SOURCE_DIR}/apple_codesign.sh
  115. )
  116. else()
  117. # Copy to build directory for easier debugging
  118. add_custom_command(TARGET vcmilauncher POST_BUILD
  119. COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/launcher/icons
  120. COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/launcher/icons ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/launcher/icons
  121. )
  122. install(TARGETS vcmilauncher DESTINATION ${BIN_DIR})
  123. # copy whole directory
  124. install(DIRECTORY icons DESTINATION ${DATA_DIR}/launcher)
  125. # Install icons and desktop file on Linux
  126. if(NOT WIN32 AND NOT APPLE)
  127. install(FILES "vcmilauncher.desktop" DESTINATION share/applications)
  128. install(FILES "eu.vcmi.VCMI.metainfo.xml" DESTINATION share/metainfo)
  129. endif()
  130. endif()