From e7e01ba5f7eafc4058b3950cb4d6367f176f9c79 Mon Sep 17 00:00:00 2001 From: Alexandre Lision <alexandre.lision@savoirfairelinux.com> Date: Mon, 30 Mar 2015 13:30:51 -0400 Subject: [PATCH] packaging: create valid bundle and dmg We use BundleUtilities to fix embedded deps, and CPack to create the DragNDrop final .dmg Refs #69161 Change-Id: I082f94b7cbf8a42e74bd3d61abf56c631a78acb9 --- CMakeLists.txt | 47 +++++++++++++++++++++++++++++++++++++++++++++-- main.mm | 8 ++++++++ 2 files changed, 53 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5475cb01..aa1af2d9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,9 +5,9 @@ IF(POLICY CMP0022) ENDIF(POLICY CMP0022) SET(PROJ_NAME Ring) -SET(RING_VERSION "0.1.x") +SET(RING_VERSION "0.1.0") SET(RING_VERSION_NAME "Samuel de Champlain") -SET(BUNDLE_VERSION "Samuel de Champlain (0.1.x") +SET(BUNDLE_VERSION "Samuel de Champlain (0.1.0") SET(PROJ_COPYRIGHT " © 2015 Savoir-faire Linux \n GPLv3 https://www.gnu.org/copyleft/gpl.html") @@ -174,3 +174,46 @@ FOREACH(xib ${ringclient_XIBS}) COMMENT "Compiling ${CMAKE_CURRENT_SOURCE_DIR}/${xib}.xib") ENDFOREACH() + +set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ${CMAKE_INSTALL_PREFIX}) + +SET(APPS "\${CMAKE_INSTALL_PREFIX}/${PROJ_NAME}.app") + +#-------------------------------------------------------------------------------- +# Install the QtTest application, on Apple, the bundle is at the root of the +# install tree +INSTALL(TARGETS ${PROJ_NAME} BUNDLE DESTINATION . COMPONENT Runtime) + +SET(QT_PLUGINS_DESTDIR ${PROJ_NAME}.app/Contents/Plugins/platforms) +#-------------------------------------------------------------------------------- +# Install needed Qt plugins by copying directories from the qt installation +LIST(APPEND QT_PLUGINS Qt5::QTgaPlugin Qt5::QTiffPlugin Qt5::QCocoaIntegrationPlugin) +FOREACH(plugin ${QT_PLUGINS}) + GET_TARGET_PROPERTY(_loc ${plugin} LOCATION) + INSTALL(FILES ${_loc} DESTINATION ${QT_PLUGINS_DESTDIR} COMPONENT Runtime) +ENDFOREACH() + +# directories to look for dependencies +SET(DIRS ${CMAKE_INSTALL_PREFIX}/lib ${QT_LIB_DIR}) + +INSTALL(CODE " + file(GLOB_RECURSE QTPLUGINS + \"\${CMAKE_INSTALL_PREFIX}/${QT_PLUGINS_DESTDIR}/*${CMAKE_SHARED_LIBRARY_SUFFIX}\") + include(BundleUtilities) + SET(BU_CHMOD_BUNDLE_ITEMS TRUE) + fixup_bundle(\"${APPS}\" \"\${QTPLUGINS}\" \"${DIRS}\") + " COMPONENT Runtime) + +#================================ +# Packaging +#================================ +SET( CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJ_NAME}) +SET( CPACK_PACKAGE_NAME ${PROJ_NAME} ) +SET( CPACK_PACKAGE_CONTACT "Alexandre Lision") +SET( CPACK_PACKAGE_VENDOR "Savoir-faire Linux") +SET( CPACK_PACKAGE_VERSION_MAJOR ${PROG_MAJOR_VERSION}) +SET( CPACK_PACKAGE_VERSION_MINOR ${PROG_MINOR_VERSION}) +SET( CPACK_PACKAGE_VERSION_PATCH ${PROG_PATCH_VERSION}) +SET(CPACK_BINARY_DRAGNDROP ON) +SET( CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}") +INCLUDE(CPack) diff --git a/main.mm b/main.mm index b97e6126..c1d86761 100644 --- a/main.mm +++ b/main.mm @@ -29,9 +29,17 @@ */ #import <AppKit/NSApplication.h> // NSApplicationMain #import <qapplication.h> +#import <QDebug> +#import <QDir> int main(int argc, const char *argv[]) { + QDir dir(QString::fromUtf8(argv[0])); + dir.cdUp(); + dir.cdUp(); + dir.cd("Plugins"); + QCoreApplication::addLibraryPath(dir.absolutePath()); + qDebug() << "" << QCoreApplication::libraryPaths(); //Qt event loop will override native event loop QApplication* app = new QApplication(argc, const_cast<char**>(argv)); app->setAttribute(Qt::AA_MacPluginApplication); -- GitLab