Russian Qt Forum
Май 17, 2024, 17:58 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [5.x.x] Qt5 + CMake [РЕШЕНО]  (Прочитано 3601 раз)
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« : Декабрь 17, 2013, 09:09 »

Кто работает с данной связкой? Сборку я победил, даже сделал так, чтобы можно было как с Qt4 собирать, так и с Qt5.
Проблема появилась с install частью. Для Qt4 я юзал следующий код:
Код:
FOREACH(LANG ${LANGUAGES})
    INSTALL(FILES ${TRANSLATIONS_DIR}/${TARGET}_${LANG}.qm DESTINATION ${CMAKE_INSTALL_PREFIX}/bin/)
    INSTALL(FILES ${QT_TRANSLATIONS_DIR}/qt_${LANG}.qm DESTINATION ${CMAKE_INSTALL_PREFIX}/bin/)
ENDFOREACH(LANG ${LANGUAGES})

IF(WIN32)
    INSTALL(FILES ${QT_BINARY_DIR}/QtCore4.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
    INSTALL(FILES ${QT_BINARY_DIR}/QtNetwork4.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
    INSTALL(FILES ${QT_BINARY_DIR}/QtXml4.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
    INSTALL(FILES ${QT_BINARY_DIR}/QtSql4.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)

    INSTALL(FILES ${QT_QJPEG_PLUGIN_RELEASE} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin/plugins/imageformats)
    INSTALL(FILES ${QT_QGIF_PLUGIN_RELEASE} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin/plugins/imageformats)

    INSTALL(FILES ${CMAKE_BINARY_DIR}/3rdparty/QtSolutions/src/qtservice/libQtService.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)

    FIND_PATH (MINGW_PATH "libstdc++-6.dll")
    INSTALL(FILES ${MINGW_PATH}/libgcc_s_dw2-1.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
    INSTALL(FILES ${MINGW_PATH}/libstdc++-6.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
    #INSTALL(FILES ${MINGW_PATH}/mingwm10.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
    INSTALL(FILES ${MINGW_PATH}/libwinpthread-1.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
ENDIF(WIN32)
Вот только для Qt5 QT_TRANSLATIONS_DIR, QT_BINARY_DIR и остальные данные пусты. Как теперь их доставать?
« Последнее редактирование: Декабрь 17, 2013, 09:32 от Пантер » Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Декабрь 17, 2013, 09:31 »

А вот и решение:

Код:
IF(USE_QT5)
    FIND_PACKAGE(Qt5Core)
    QT5_USE_MODULES(${TARGET} Core Xml Network)
    SET(QT_TRANSLATIONS_DIR ${_qt5Core_install_prefix}/translations)
    SET(QT_BINARY_DIR ${_qt5Core_install_prefix}/bin)
    SET(QT_QJPEG_PLUGIN_RELEASE ${_qt5Core_install_prefix}/plugins/imageformats/qjpeg.dll)
    SET(QT_QGIF_PLUGIN_RELEASE ${_qt5Core_install_prefix}/plugins/imageformats/qgif.dll)
ENDIF(USE_QT5)

SET(LANGUAGES ru)
SET(TRANSLATIONS_DIR ${CMAKE_SOURCE_DIR}/share/translations)

FOREACH(LANG ${LANGUAGES})
    ADD_CUSTOM_COMMAND(
        TARGET ${TARGET}
        PRE_BUILD
        COMMAND lupdate
        ARGS -no-obsolete -target-language ${LANG} -locations relative -recursive ${CMAKE_CURRENT_SOURCE_DIR} -ts ${TRANSLATIONS_DIR}/${TARGET}_${LANG}.ts
        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
        COMMAND lrelease
        ARGS ${TRANSLATIONS_DIR}/${TARGET}_${LANG}.ts
        WORKING_DIRECTORY ${TRANSLATIONS_DIR}
    )
ENDFOREACH(LANG ${LANGUAS})

FOREACH(LANG ${LANGUAGES})
    INSTALL(FILES ${TRANSLATIONS_DIR}/${TARGET}_${LANG}.qm DESTINATION ${CMAKE_INSTALL_PREFIX}/bin/)
    INSTALL(FILES ${QT_TRANSLATIONS_DIR}/qt_${LANG}.qm DESTINATION ${CMAKE_INSTALL_PREFIX}/bin/)
ENDFOREACH(LANG ${LANGUAGES})

INSTALL(TARGETS ${TARGET} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)

FOREACH(Lib ${SIMICONLIBS_LIBRARIES})
    INSTALL(FILES ${Lib} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
ENDFOREACH(Lib ${SIMICONLIBS_LIBRARIES})

IF(WIN32)
    IF(USE_QT5)
        INSTALL(FILES ${QT_BINARY_DIR}/Qt5Core.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
        INSTALL(FILES ${QT_BINARY_DIR}/Qt5Network.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
        INSTALL(FILES ${QT_BINARY_DIR}/Qt5Xml.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
        INSTALL(FILES ${QT_BINARY_DIR}/Qt5Sql.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
    ELSE(USE_QT5)
        INSTALL(FILES ${QT_BINARY_DIR}/QtCore4.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
        INSTALL(FILES ${QT_BINARY_DIR}/QtNetwork4.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
        INSTALL(FILES ${QT_BINARY_DIR}/QtXml4.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
        INSTALL(FILES ${QT_BINARY_DIR}/QtSql4.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
    ENDIF(USE_QT5)

    INSTALL(FILES ${QT_QJPEG_PLUGIN_RELEASE} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin/plugins/imageformats)
    INSTALL(FILES ${QT_QGIF_PLUGIN_RELEASE} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin/plugins/imageformats)
   
    IF(USE_QT5)
        FIND_PATH (ICU_PATH "icuuc52.dll")
        INSTALL(FILES ${ICU_PATH}/icudt52.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
        INSTALL(FILES ${ICU_PATH}/icuin52.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
        INSTALL(FILES ${ICU_PATH}/icuio52.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
        INSTALL(FILES ${ICU_PATH}/icule52.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
        INSTALL(FILES ${ICU_PATH}/icutest52.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
        INSTALL(FILES ${ICU_PATH}/icutu52.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
        INSTALL(FILES ${ICU_PATH}/icuuc52.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
    ENDIF(USE_QT5)

    FIND_PATH (MINGW_PATH "libstdc++-6.dll")
    INSTALL(FILES ${MINGW_PATH}/libgcc_s_dw2-1.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
    INSTALL(FILES ${MINGW_PATH}/libstdc++-6.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
    #INSTALL(FILES ${MINGW_PATH}/mingwm10.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
    INSTALL(FILES ${MINGW_PATH}/libwinpthread-1.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
ENDIF(WIN32)

Все крутится возле _qt5Core_install_prefix
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.061 секунд. Запросов: 23.