From 03c7bf5ee6c0c1714d7841f3d2d56676f86adb6f Mon Sep 17 00:00:00 2001 From: Arseniy Shestakov Date: Wed, 16 Aug 2017 14:52:39 +0300 Subject: [PATCH] CMake: installer building improvements for Windows - Implement support for BundleUtilities when Vcpkg is used - Add some hacky code to copy Qt plugins install directory - Use same icon for launcher as used for VCMI, launcher one is ugly --- CMakeLists.txt | 16 ++++++++++++---- launcher/VCMI_launcher.ico | Bin 2998 -> 32038 bytes osx/CMakeLists.txt | 31 ++++++++++++++++++++++++++++++- 3 files changed, 42 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 743907e4c..e1d7dfcd7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,6 +16,10 @@ project(VCMI) # MXE: # - Try to implement MXE support into BundleUtilities so we can deploy deps automatically # +# Vckpg: +# - Improve install code once there is better way to deploy DLLs and Qt plugins +# - Move Vcpkg install BundleUtilities code from osx/CMakeLists.txt +# # Other: # - Cleanup remove_directory copy_directory if performance will be a problem. # We can use some macro over copy_if_different since it's only work for single file. @@ -362,6 +366,7 @@ endif() set(CPACK_PACKAGE_VENDOR "VCMI team") if(WIN32) + # Note: due to NSI script generation process all of the backward slashes here are useful set(CPACK_MONOLITHIC_INSTALL 1) set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/license.txt") set(CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_NAME}") @@ -382,10 +387,10 @@ if(WIN32) # set the install/unistall icon used for the installer itself # There is a bug in NSI that does not handle full unix paths properly. - set(CPACK_NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}/client\\vcmi.ico") - set(CPACK_NSIS_MUI_UNIICON "${CMAKE_CURRENT_SOURCE_DIR}/client\\vcmi.ico") + set(CPACK_NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}/client\\\\vcmi.ico") + set(CPACK_NSIS_MUI_UNIICON "${CMAKE_CURRENT_SOURCE_DIR}/client\\\\vcmi.ico") # set the package header icon for MUI - set(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/client\\vcmi.ico") + set(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/client\\\\vcmi.ico") set(CPACK_NSIS_MENU_LINKS "http://vcmi.eu/" "VCMI Web Site") @@ -396,7 +401,10 @@ if(WIN32) set(CPACK_NSIS_URL_INFO_ABOUT "http://vcmi.eu/") set(CPACK_NSIS_CONTACT @CPACK_PACKAGE_CONTACT@) set(CPACK_NSIS_EXECUTABLES_DIRECTORY ".") - + # Use BundleUtilities to fix build when Vcpkg is used and disable it for MXE + if(NOT (${CMAKE_CROSSCOMPILING})) + add_subdirectory(osx) + endif() elseif(APPLE AND NOT ENABLE_MONOLITHIC_INSTALL) set(CPACK_MONOLITHIC_INSTALL 1) set(CPACK_GENERATOR "DragNDrop") diff --git a/launcher/VCMI_launcher.ico b/launcher/VCMI_launcher.ico index 449296f495af26f2b41bb1626a28de7432145472..40818c4644c43924635690ea58dcdce6786e5466 100644 GIT binary patch literal 32038 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