From d4492ef51412617077bfbdc5c2487de51fe3f04c Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava Date: Sun, 30 Jun 2019 10:11:10 +0200 Subject: [PATCH] Extract CMake Deploy information --- CMakeLists.txt | 53 +------------------------------------------ cmake/QGCDeploy.cmake | 49 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 52 deletions(-) create mode 100644 cmake/QGCDeploy.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index b6934ee99..b2cf0eb09 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -152,56 +152,5 @@ if(NOT QT_MKSPEC MATCHES "winrt") ) endif() -if(LINUX) - -elseif(APPLE) - - get_target_property(_qmake_executable Qt5::qmake IMPORTED_LOCATION) - get_filename_component(_qt_bin_dir "${_qmake_executable}" DIRECTORY) - find_program(MACDEPLOYQT_EXECUTABLE macdeployqt HINTS "${_qt_bin_dir}") - - add_custom_command(TARGET QGroundControl - POST_BUILD - COMMAND - ${MACDEPLOYQT_EXECUTABLE} $/../.. -appstore-compliant -qmldir=${CMAKE_SOURCE_DIR}/src - COMMAND - rsync -a ${CMAKE_SOURCE_DIR}/libs/lib/Frameworks $/../../Contents/ - COMMAND - ${CMAKE_INSTALL_NAME_TOOL} -change "@rpath/SDL2.framework/Versions/A/SDL2" "@executable_path/../Frameworks/SDL2.framework/Versions/A/SDL2" $ - ) - - set_target_properties(QGroundControl PROPERTIES MACOSX_BUNDLE YES) - -elseif(WIN32) - - if(MSVC) # Check if we are using the Visual Studio compiler - set_target_properties(${PROJECT_NAME} PROPERTIES - WIN32_EXECUTABLE YES - LINK_FLAGS "/ENTRY:mainCRTStartup" - ) - endif() - - # deploy - include(Windeployqt) - windeployqt(QGroundControl "QGroundControl-installer.exe") - -elseif(ANDROID) - include(AddQtAndroidApk) - add_qt_android_apk(QGroundControl.apk QGroundControl - PACKAGE_NAME "io.mavlink.qgroundcontrol" - #KEYSTORE ${CMAKE_CURRENT_LIST_DIR}/mykey.keystore myalias - #KEYSTORE_PASSWORD xxxxx - ) - -elseif(LINUX) - # TODO: investigate https://github.com/probonopd/linuxdeployqt - - add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/release/package/QGroundControl.AppImage - COMMAND ${CMAKE_SOURCE_DIR}/deploy/create_linux_appimage.sh ${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/release/package; - DEPENDS QGroundControl - USES_TERMINAL - ) - add_custom_target(appimage DEPENDS ${CMAKE_BINARY_DIR}/release/package/QGroundControl.AppImage) - -endif() +include(QGCDeploy) diff --git a/cmake/QGCDeploy.cmake b/cmake/QGCDeploy.cmake new file mode 100644 index 000000000..8e134b4f6 --- /dev/null +++ b/cmake/QGCDeploy.cmake @@ -0,0 +1,49 @@ + +if(LINUX) + # TODO: investigate https://github.com/probonopd/linuxdeployqt + + add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/release/package/QGroundControl.AppImage + COMMAND ${CMAKE_SOURCE_DIR}/deploy/create_linux_appimage.sh ${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/release/package; + DEPENDS QGroundControl + USES_TERMINAL + ) + add_custom_target(appimage DEPENDS ${CMAKE_BINARY_DIR}/release/package/QGroundControl.AppImage) + +elseif(APPLE) + + get_target_property(_qmake_executable Qt5::qmake IMPORTED_LOCATION) + get_filename_component(_qt_bin_dir "${_qmake_executable}" DIRECTORY) + find_program(MACDEPLOYQT_EXECUTABLE macdeployqt HINTS "${_qt_bin_dir}") + + add_custom_command(TARGET QGroundControl + POST_BUILD + COMMAND + ${MACDEPLOYQT_EXECUTABLE} $/../.. -appstore-compliant -qmldir=${CMAKE_SOURCE_DIR}/src + COMMAND + rsync -a ${CMAKE_SOURCE_DIR}/libs/lib/Frameworks $/../../Contents/ + COMMAND + ${CMAKE_INSTALL_NAME_TOOL} -change "@rpath/SDL2.framework/Versions/A/SDL2" "@executable_path/../Frameworks/SDL2.framework/Versions/A/SDL2" $ + ) + + set_target_properties(QGroundControl PROPERTIES MACOSX_BUNDLE YES) + +elseif(WIN32) + if(MSVC) # Check if we are using the Visual Studio compiler + set_target_properties(${PROJECT_NAME} PROPERTIES + WIN32_EXECUTABLE YES + LINK_FLAGS "/ENTRY:mainCRTStartup" + ) + endif() + + # deploy + include(Windeployqt) + windeployqt(QGroundControl "QGroundControl-installer.exe") + +elseif(ANDROID) + include(AddQtAndroidApk) + add_qt_android_apk(QGroundControl.apk QGroundControl + PACKAGE_NAME "io.mavlink.qgroundcontrol" + #KEYSTORE ${CMAKE_CURRENT_LIST_DIR}/mykey.keystore myalias + #KEYSTORE_PASSWORD xxxxx + ) +endif() -- 2.22.0