From 72fa8adea0178bf01d8865888fc2259b10597794 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elouan=20App=C3=A9r=C3=A9?= Date: Wed, 2 Sep 2015 22:10:14 +0200 Subject: [PATCH] Fixed "install" target. Now installs to installdir/bin directly, calling windeployqt on windows --- CMakeLists.txt | 16 +++---- LibPkmGC/CMakeLists.txt | 19 +++----- PkmGCSaveEditor/CMakeLists.txt | 70 ++++-------------------------- PkmGCSaveEditor/src/MainWindow.cpp | 4 +- 4 files changed, 24 insertions(+), 85 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ebfd145..f63d2bf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,20 +7,18 @@ message("BUILD_PKMGCSAVEEDITOR:\t${BUILD_PKMGCSAVEEDITOR}") set(CMAKE_INSTALL_PREFIX installdir) set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP ON) include(InstallRequiredSystemLibraries) -install(FILES ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} DESTINATION Release/bin CONFIGURATIONS Release RelWithDebInfo MinSizeRel COMPONENT Runtime) +install(FILES ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} DESTINATION bin COMPONENT Runtime) add_subdirectory(LibPkmGC) add_definitions(${LIBPKMGC_DEFINITIONS}) if(BUILD_PKMGCSAVEEDITOR) add_subdirectory(PkmGCSaveEditor) - install(FILES ${LIBPKMGC_RUNTIME} DESTINATION Debug/bin CONFIGURATIONS Debug COMPONENT Runtime) - install(FILES ${LIBPKMGC_RUNTIME} DESTINATION Release/bin CONFIGURATIONS Release RelWithDebInfo MinSizeRel COMPONENT Runtime) - - install(FILES ${QT5_RUNTIME_DEBUG} DESTINATION Debug/bin CONFIGURATIONS Debug COMPONENT Runtime) - install(FILES ${QT5_RUNTIME_RELEASE} DESTINATION Release/bin CONFIGURATIONS Release RelWithDebInfo MinSizeRel COMPONENT Runtime) - - install(FILES ${QT5_TRANSLATION_QM} DESTINATION Debug/bin/languages CONFIGURATIONS Debug COMPONENT Translations OPTIONAL) - install(FILES ${QT5_TRANSLATION_QM} DESTINATION Release/bin/languages CONFIGURATIONS Release RelWithDebInfo MinSizeRel COMPONENT Translations OPTIONAL) + + install(FILES ${LIBPKMGC_RUNTIME} DESTINATION bin COMPONENT Runtime) + if(WIN32) + install(CODE "message(\"Running windeployqt\")" COMPONENT RUNTIME) + install(CODE "execute_process(COMMAND ${QT5_BINARY_DIR}/windeployqt.exe ${CMAKE_INSTALL_PREFIX}/bin/PkmGCSaveEditor.exe)") + endif(WIN32) endif() diff --git a/LibPkmGC/CMakeLists.txt b/LibPkmGC/CMakeLists.txt index 8c2f8df..51d792f 100644 --- a/LibPkmGC/CMakeLists.txt +++ b/LibPkmGC/CMakeLists.txt @@ -28,24 +28,19 @@ if(LIBPKMGC_DYN_LIB) add_definitions(-DLIBPKMGC_DYN_LIB) add_library(LibPkmGC SHARED ${all_files}) set(LIBPKMGC_RUNTIME $ CACHE INTERNAL "Runtime dependencies for projects linking against this library" FORCE) - install(FILES $ $ DESTINATION Release/lib/shared CONFIGURATIONS Release RelWithDebInfo MinSizeRel COMPONENT Libraries) - install(FILES $ $ DESTINATION Debug/lib/shared CONFIGURATIONS Debug COMPONENT Libraries) - install(FILES "README.md" "LICENSE" DESTINATION Debug/lib/shared CONFIGURATIONS Debug COMPONENT Libraries) - install(FILES "README.md" "LICENSE" DESTINATION Release/lib/shared CONFIGURATIONS Release RelWithDebInfo MinSizeRel COMPONENT Libraries) + install(FILES $ $ DESTINATION lib/shared COMPONENT Libraries) else() set(LIBPKMGC_DEFINITIONS -DLIBPKMGC_STATIC_LIB CACHE INTERNAL "LibPkmGC's definitions" FORCE) add_definitions(-DLIBPKMGC_STATIC_LIB) add_library(LibPkmGC STATIC ${all_files}) - install(FILES $ DESTINATION Release/lib/static CONFIGURATIONS Release RelWithDebInfo MinSizeRel COMPONENT Libraries) - install(FILES $ DESTINATION Debug/lib/static CONFIGURATIONS Debug COMPONENT Libraries) - install(FILES "README.md" "LICENSE" DESTINATION Debug/lib/static CONFIGURATIONS Debug COMPONENT Libraries) - install(FILES "README.md" "LICENSE" DESTINATION Release/lib/static CONFIGURATIONS Release RelWithDebInfo MinSizeRel COMPONENT Libraries) + install(FILES $ DESTINATION lib/static COMPONENT Libraries) endif() -install(DIRECTORY "include/LibPkmGC" DESTINATION "Release/include" CONFIGURATIONS Release RelWithDebInfo MinSizeRel COMPONENT Headers) -install(DIRECTORY "include/LibPkmGC" DESTINATION "Debug/include" CONFIGURATIONS Debug COMPONENT Headers) +install(FILES "README.md" "LICENSE" DESTINATION lib CONFIGURATIONS Debug COMPONENT Libraries) -install(FILES "README.md" "LICENSE" DESTINATION "Debug/include" CONFIGURATIONS Debug COMPONENT Headers) -install(FILES "README.md" "LICENSE" DESTINATION "Release/include" CONFIGURATIONS Release RelWithDebInfo MinSizeRel COMPONENT Headers) + +install(DIRECTORY "include/LibPkmGC" DESTINATION "include" COMPONENT Headers) + +install(FILES "README.md" "LICENSE" DESTINATION "include" COMPONENT Headers) set_target_properties(LibPkmGC PROPERTIES PREFIX "" IMPORT_PREFIX "") \ No newline at end of file diff --git a/PkmGCSaveEditor/CMakeLists.txt b/PkmGCSaveEditor/CMakeLists.txt index fc910de..3ed79b7 100644 --- a/PkmGCSaveEditor/CMakeLists.txt +++ b/PkmGCSaveEditor/CMakeLists.txt @@ -18,26 +18,17 @@ target_link_libraries(PkmGCSaveEditor LibPkmGC Qt5::Widgets) set(PKMGCSAVEEDITOR_SUPPORTED_LANGUAGES en fr CACHE INTERNAL "PkmGCSaveEditor's supported languages" FORCE) +get_target_property(QT5_QMAKE_EXECUTABLE Qt5::qmake IMPORTED_LOCATION) +execute_process(COMMAND ${QT5_QMAKE_EXECUTABLE} -query QT_INSTALL_BINS OUTPUT_VARIABLE QT5_BINARY_DIR OUTPUT_STRIP_TRAILING_WHITESPACE) +message(${QT5_BINARY_DIR}) +set(QT5_BINARY_DIR ${QT5_BINARY_DIR} CACHE INTERNAL "Qt5 bin dir" FORCE) + if(Qt5LinguistTools_FOUND) unset(PKMGCSAVEEDITOR_TRANSLATION_FILES) - get_target_property(QT5_QMAKE_EXECUTABLE Qt5::qmake IMPORTED_LOCATION) - execute_process(COMMAND ${QT5_QMAKE_EXECUTABLE} -query QT_INSTALL_TRANSLATIONS OUTPUT_VARIABLE QT5_QM_DIR OUTPUT_STRIP_TRAILING_WHITESPACE) foreach(language ${PKMGCSAVEEDITOR_SUPPORTED_LANGUAGES}) list(APPEND PKMGCSAVEEDITOR_TRANSLATION_FILES translations/PkmGCSaveEditor_${language}.ts) - if(EXISTS ${QT5_QM_DIR}/qt_${language}.qm) # qt_en.qm does not exist - list(APPEND QT5_TRANSLATION_QM ${QT5_QM_DIR}/qt_${language}.qm) - elseif(EXISTS translations/qt/qt_${language}.qm) - list(APPEND QT5_TRANSLATION_QM translations/qt/qt_${language}.qm) - endif(EXISTS ${QT5_QM_DIR}/qt_${language}.qm) - - if(EXISTS ${QT5_QM_DIR}/qtbase_${language}.qm) - list(APPEND QT5_TRANSLATION_QM ${QT5_QM_DIR}/qtbase_${language}.qm) # Required for Qt > 5.3 - elseif(EXISTS translations/qt/qtbase_${language}.qm) - list(APPEND QT5_TRANSLATION_QM translations/qt/qtbase_${language}.qm) - endif(EXISTS ${QT5_QM_DIR}/qtbase_${language}.qm) endforeach(language) list(REMOVE_DUPLICATES QT5_TRANSLATION_QM) - set(QT5_TRANSLATION_QM ${QT5_TRANSLATION_QM} CACHE INTERNAL "Qt5 *.qm") set_directory_properties(PROPERTIES CLEAN_NO_CUSTOM 1) # prevent make clean from removing TS files @@ -46,58 +37,13 @@ if(Qt5LinguistTools_FOUND) add_custom_target(PkmGCSaveEditor_translations_update DEPENDS ${TRANSLATION_MESSAGES}) add_custom_target(PkmGCSaveEditor_translations DEPENDS ${TRANSLATION_QM}) - install(FILES ${TRANSLATION_QM} DESTINATION Debug/bin/languages CONFIGURATIONS Debug COMPONENT Translations OPTIONAL) - install(FILES ${TRANSLATION_QM} DESTINATION Release/bin/languages CONFIGURATIONS Release RelWithDebInfo MinSizeRel COMPONENT Translations OPTIONAL) + install(FILES ${TRANSLATION_QM} DESTINATION bin/translations COMPONENT Translations OPTIONAL) else(Qt5LinguistTools_FOUND) message("Qt5LinguistTools was NOT found. The translation files will not be able to be updated.") endif(Qt5LinguistTools_FOUND) -# DLL hell +install(PROGRAMS $ DESTINATION bin/ COMPONENT Runtime) - -if(NOT WIN32 AND NOT COPY_QT_LIBS_UNIX) - set(COPY_QT_LIBS OFF) -else() - set(COPY_QT_LIBS ON) -endif() - -if(COPY_QT_LIBS) - get_target_property(qt_libs Qt5::Widgets INTERFACE_LINK_LIBRARIES) - get_target_property(qt_widgets_location Qt5::Widgets LOCATION_Release) - if(WIN32) - get_target_property(qt_windows_plugin_location Qt5::QWindowsIntegrationPlugin LOCATION_Release) - list(APPEND QT5_RUNTIME_RELEASE ${qt_windows_plugin_location}) - endif() - list(APPEND QT5_RUNTIME_RELEASE ${qt_widgets_location}) - foreach(qt_lib ${qt_libs}) - get_target_property(qt_lib_location ${qt_lib} LOCATION_Release) - list(APPEND QT5_RUNTIME_RELEASE ${qt_lib_location}) - endforeach() - list(REMOVE_DUPLICATES QT5_RUNTIME_RELEASE) - set(QT5_RUNTIME_RELEASE ${QT5_RUNTIME_RELEASE} CACHE INTERNAL "Qt5 release libraries" FORCE) - - get_target_property(qt_libs Qt5::Widgets INTERFACE_LINK_LIBRARIES) - get_target_property(qt_widgets_location Qt5::Widgets LOCATION_Debug) - if(WIN32) - get_target_property(qt_windows_plugin_location Qt5::QWindowsIntegrationPlugin LOCATION_Debug) - list(APPEND QT5_RUNTIME_RELEASE ${qt_windows_plugin_location}) - endif() - list(APPEND QT5_RUNTIME_DEBUG ${qt_widgets_location}) - foreach(qt_lib ${qt_libs}) - get_target_property(qt_lib_location ${qt_lib} LOCATION_Debug) - list(APPEND QT5_RUNTIME_DEBUG ${qt_lib_location}) - endforeach() - - list(REMOVE_DUPLICATES QT5_RUNTIME_DEBUG) - - set(QT5_RUNTIME_DEBUG ${QT5_RUNTIME_DEBUG} CACHE INTERNAL "Qt5 debug libraries" FORCE) - -endif() - -install(PROGRAMS $ DESTINATION Debug/bin CONFIGURATIONS Debug) -install(PROGRAMS $ DESTINATION Release/bin CONFIGURATIONS Release RelWithDebInfo MinSizeRel) - -install(FILES "README.md" "LICENSE" DESTINATION Debug/bin CONFIGURATIONS Debug) -install(FILES "README.md" "LICENSE" DESTINATION Release/bin CONFIGURATIONS Release RelWithDebInfo MinSizeRel) +install(FILES "README.md" "LICENSE" DESTINATION bin COMPONENT Runtime) diff --git a/PkmGCSaveEditor/src/MainWindow.cpp b/PkmGCSaveEditor/src/MainWindow.cpp index 0640d6d..1158b15 100644 --- a/PkmGCSaveEditor/src/MainWindow.cpp +++ b/PkmGCSaveEditor/src/MainWindow.cpp @@ -157,7 +157,7 @@ void MainWindow::createInterfaceLanguageMenu(void) { connect(interfaceLangGroup, SIGNAL(triggered(QAction*)), this, SLOT(interfaceLanguageChanged(QAction*))); - langPath = QApplication::applicationDirPath().append("/languages/"); + langPath = QApplication::applicationDirPath().append("/translations/"); QStringList fileNames = QDir(langPath).entryList(QStringList("PkmGCSaveEditor_*.qm")); QAction *actionToCheck = select_auto; @@ -221,7 +221,7 @@ QString MainWindow::loadInterfaceLanguage(QString const& language) { QString sys_language = QLocale::system().name(); sys_language.truncate(sys_language.lastIndexOf('_')); - QString langPath = QApplication::applicationDirPath().append("/languages/"); + QString langPath = QApplication::applicationDirPath().append("/translations/"); QString lg = (language == "auto") ? sys_language : language; QString fileName = langPath +QString("PkmGCSaveEditor_%1.qm").arg(lg); if (!QFile(fileName).exists()) {