Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/keepassxreboot/keepassxc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorAdolfo E. GarcĂ­a <adolfo.garcia.cr@gmail.com>2018-06-11 01:16:30 +0300
committerJonathan White <droidmonkey@users.noreply.github.com>2018-06-11 01:16:30 +0300
commit83917299db6a2ba3c99937c6ed6ce60985618f99 (patch)
tree1d313ef89c5a183b73ad85da3cca30b0b35333b0 /cmake
parent959acb798896dd69561b271bc281ba99aa518008 (diff)
Add AppVeyor support (#1380)
Diffstat (limited to 'cmake')
-rw-r--r--cmake/DeployQt.cmake88
1 files changed, 88 insertions, 0 deletions
diff --git a/cmake/DeployQt.cmake b/cmake/DeployQt.cmake
new file mode 100644
index 000000000..a9d239be8
--- /dev/null
+++ b/cmake/DeployQt.cmake
@@ -0,0 +1,88 @@
+# The MIT License (MIT)
+#
+# Copyright (c) 2018 Nathan Osman
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+find_package(Qt5Core REQUIRED)
+
+# Retrieve the absolute path to qmake and then use that path to find
+# the windeployqt and macdeployqt binaries
+get_target_property(_qmake_executable Qt5::qmake IMPORTED_LOCATION)
+get_filename_component(_qt_bin_dir "${_qmake_executable}" DIRECTORY)
+
+find_program(WINDEPLOYQT_EXECUTABLE windeployqt HINTS "${_qt_bin_dir}")
+if(WIN32 AND NOT WINDEPLOYQT_EXECUTABLE)
+ message(FATAL_ERROR "windeployqt not found")
+endif()
+
+find_program(MACDEPLOYQT_EXECUTABLE macdeployqt HINTS "${_qt_bin_dir}")
+if(APPLE AND NOT MACDEPLOYQT_EXECUTABLE)
+ message(FATAL_ERROR "macdeployqt not found")
+endif()
+
+# Add commands that copy the required Qt files to the same directory as the
+# target after being built as well as including them in final installation
+function(windeployqt target)
+
+ # Run windeployqt immediately after build
+ add_custom_command(TARGET ${target} POST_BUILD
+ COMMAND "${CMAKE_COMMAND}" -E
+ env PATH="${_qt_bin_dir}" "${WINDEPLOYQT_EXECUTABLE}"
+ --verbose 0
+ --no-compiler-runtime
+ --no-angle
+ --no-opengl-sw
+ \"$<TARGET_FILE:${target}>\"
+ COMMENT "Deploying Qt..."
+ )
+
+ # windeployqt doesn't work correctly with the system runtime libraries,
+ # so we fall back to one of CMake's own modules for copying them over
+
+ # Doing this with MSVC 2015 requires CMake 3.6+
+ if((MSVC_VERSION VERSION_EQUAL 1900 OR MSVC_VERSION VERSION_GREATER 1900)
+ AND CMAKE_VERSION VERSION_LESS "3.6")
+ message(WARNING "Deploying with MSVC 2015+ requires CMake 3.6+")
+ endif()
+
+ set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE)
+ include(InstallRequiredSystemLibraries)
+ foreach(lib ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS})
+ get_filename_component(filename "${lib}" NAME)
+ add_custom_command(TARGET ${target} POST_BUILD
+ COMMAND "${CMAKE_COMMAND}" -E
+ copy_if_different "${lib}" \"$<TARGET_FILE_DIR:${target}>\"
+ COMMENT "Copying ${filename}..."
+ )
+ endforeach()
+endfunction()
+
+# Add commands that copy the required Qt files to the application bundle
+# represented by the target.
+function(macdeployqt target)
+ add_custom_command(TARGET ${target} POST_BUILD
+ COMMAND "${MACDEPLOYQT_EXECUTABLE}"
+ \"$<TARGET_FILE_DIR:${target}>/../..\"
+ -always-overwrite
+ COMMENT "Deploying Qt..."
+ )
+endfunction()
+
+mark_as_advanced(WINDEPLOYQT_EXECUTABLE MACDEPLOYQT_EXECUTABLE)