Fixed "install" target. Now installs to installdir/bin directly, calling windeployqt on windows

This commit is contained in:
Elouan Appéré
2015-09-02 22:10:14 +02:00
parent e53842229b
commit 72fa8adea0
4 changed files with 24 additions and 85 deletions

View File

@@ -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()

View File

@@ -28,24 +28,19 @@ if(LIBPKMGC_DYN_LIB)
add_definitions(-DLIBPKMGC_DYN_LIB)
add_library(LibPkmGC SHARED ${all_files})
set(LIBPKMGC_RUNTIME $<TARGET_FILE:LibPkmGC> CACHE INTERNAL "Runtime dependencies for projects linking against this library" FORCE)
install(FILES $<TARGET_FILE:LibPkmGC> $<TARGET_LINKER_FILE:LibPkmGC> DESTINATION Release/lib/shared CONFIGURATIONS Release RelWithDebInfo MinSizeRel COMPONENT Libraries)
install(FILES $<TARGET_FILE:LibPkmGC> $<TARGET_LINKER_FILE:LibPkmGC> 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 $<TARGET_FILE:LibPkmGC> $<TARGET_LINKER_FILE:LibPkmGC> 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 $<TARGET_FILE:LibPkmGC> DESTINATION Release/lib/static CONFIGURATIONS Release RelWithDebInfo MinSizeRel COMPONENT Libraries)
install(FILES $<TARGET_FILE:LibPkmGC> 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 $<TARGET_FILE:LibPkmGC> 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 "")

View File

@@ -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 $<TARGET_FILE:PkmGCSaveEditor> 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 $<TARGET_FILE:PkmGCSaveEditor> DESTINATION Debug/bin CONFIGURATIONS Debug)
install(PROGRAMS $<TARGET_FILE:PkmGCSaveEditor> 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)

View File

@@ -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()) {