Всем привет. Кто-нибудь пользовался cmake install RUNTIME_DEPENDENCY_SET? Можно это как-то использовать,

чтобы копировать нужные Qt-библиотеки в папку install? Хочу сделать примитивный деплой на коленке через cmake install, как-то надо копировать qt-библиотеки и плагины.

27 ответов

7 просмотров

windeployqt

ep- Автор вопроса
Dårk Pit
windeployqt

да знаю я про это, я хочу кнопку build нажать в qtcreator и получить всё нужное в одном месте без лишних шагов. насколько вижу, qtcreator с windeployqt не интегрирован.

ep
да знаю я про это, я хочу кнопку build нажать в qt...

Это консольная утилита, можно запускать и не руками https://stackoverflow.com/questions/41193584/deploy-all-qt-dependencies-when-building

ep- Автор вопроса
我が名はレギオン
Это консольная утилита, можно запускать и не рукам...

ну я и говорю, через add_custom_command или execute_process запускать её.

ep
ну я и говорю, через add_custom_command или execut...

Если не нравится идея вставлять код в CMake, то Qt Creator поддерживает кастомные шаги сборки

ep- Автор вопроса
我が名はレギオン
Это консольная утилита, можно запускать и не рукам...

Код из примера дикий конечно get_target_property(_qt5_qmake_location Qt5::qmake IMPORTED_LOCATION) execute_process( COMMAND "${_qt5_qmake_location}" -query QT_INSTALL_PREFIX RESULT_VARIABLE return_code OUTPUT_VARIABLE qt5_install_prefix OUTPUT_STRIP_TRAILING_WHITESPACE ) set(imported_location "${qt5_install_prefix}/bin/windeployqt.exe") Можно заменить просто на: get_target_property(_qt5_qmake Qt5::qmake IMPORTED_LOCATION) get_filename_component(_qt5_bin_dir ${_qt5_qmake} DIRECTORY) set(_windeployqt ${_qt5_bin_dir}/windeployqt.exe)

ep- Автор вопроса
我が名はレギオン
screenshot Если не нравится идея вставлять код в CMake, то Qt...

Лучше всё в cmake прописать, чтобы не завязываться на креатор

ep- Автор вопроса
Stanislav Ershov
хех, в Qt6 есть add_executable(Qt6::windeployqt IM...

лучше бы добавили свою функцию install, которая внутри бы сама всё подтягивала. Они же добавили свои функции типа qt_add_executable, надо qt_install и всё.

ep
лучше бы добавили свою функцию install, которая вн...

а там есть qt_install )) только делает он слегка другое

ep
лучше бы добавили свою функцию install, которая вн...

install и deploy всё же несколько разные вещи, с точки зрения пакетных менеджеров и вот этого всего

ep- Автор вопроса
Dårk Pit
install и deploy всё же несколько разные вещи, с т...

Согласен. И деплой - это вроде как не дело cmake, хотя он давно уже в комбайн "всё в одном" превратился. Тогда можно и хэлпер сделать qt_deploy. 😏

Пользовался, удобная штука т.к. windeployqt проигнорирует неявные зависимости. Юзаю их оба чтобы всё скопировать

ep- Автор вопроса
Michael Chambers
Пользовался, удобная штука т.к. windeployqt проигн...

Я попробовал сделать file(GET_RUNTIME_DEPENDENCIES) для своего бинарника, он выдал кучу виндовых библиотек из system32 и ни одной qt-шной. Может я неправильно что-то делаю, конечно, но выглядит странно. Это типа пол винды затащить в дистр - бред.

Michael Chambers
Пользовался, удобная штука т.к. windeployqt проигн...

ну кста, за последние годы оно получше стало, особенно с QML

ep
Я попробовал сделать file(GET_RUNTIME_DEPENDENCIES...

там много хаков, смотрите сами https://pastebin.com/qC5Ph63z

ep- Автор вопроса
Michael Chambers
там много хаков, смотрите сами https://pastebin.co...

Да уж, cmake - боль. Спасибо! Пойду разбираться.

Dårk Pit
ну кста, за последние годы оно получше стало, особ...

windeployqt вытягивает неявные кутешные зависимости типа плагинов разных, а через GET_RUNTIME_DEPENDENCIES вытягиваются кутешные либы, которые линкуется к 3rd-party либам? также вытягиваются и сами 3rd-party

ep- Автор вопроса
Michael Chambers
windeployqt вытягивает неявные кутешные зависимост...

Попробовал сделать с windeployqt, для Release конфигурации он зачем-то кладёт vc_redist.x64.exe (vc_redist.x86) файлы вместо библиотек. А для отладочной версии кладёт именно библиотеки (msvcp140d.dll) Это специально так задумано? Типа пользователь должен поставить MSVC runtime в систему самостоятельно?

ep
Попробовал сделать с windeployqt, для Release конф...

Рантайм я кладу в инсталлятор самостоятельно отдельным шагом (не в cmake). Чтобы установился он сам и последний студийный т.к. windeployqt кладет старый. И ещё есть опция --no-compiler-runtime

ep
Попробовал сделать с windeployqt, для Release конф...

у windeployqt флаг для релиза сломан, и это широко известная в узких кругах проблема. либо дебаг, либо ничего.

ep- Автор вопроса
Dårk Pit
у windeployqt флаг для релиза сломан, и это широко...

А что именно сломано? Так то оно вроде работает

Dmitriy [Отпуск]
О да. Собирать релизные dll'ки ручками...

нет, в смысле просто не использовать флаг --release. ладно, я точно не помню, но читал форумы и github issues про один и тот же баг.

ep- Автор вопроса
Dårk Pit
нет, в смысле просто не использовать флаг --releas...

Я этот флаг не задаю, он сам понимает что экзешник релизный

Похожие вопросы

Обсуждают сегодня

Всем привет, Добавил в плагин определение user agent public function registerMarkupTags() { return [ 'filters' => [ 'staticPage' => ['RainLab\Pages\Cl...
John Norton Kruger
3
Я колись ставив гуглу антиспам 3.0, може і норм, але мені не дуже зайшло. Теж думав тиждень, що його і куди. Зупинився на трех варіантах відразу всі три і включив 1. Перевір...
𝓔𝓾𝓰𝓮𝓷𝓮𝓥 J
2
Всем привет, может кто знает нормальных иностранных хостинг провайдеров. Что бы по качеству аналогичные netangels, beget, timeweb?
Black Cat
4
Добрый день , слышали про то что XML схемы https://schemas.xmlsoap.org/soap/envelope/ перестали работать со поза-вчера. А домен https://schemas.xmlsoap.org/ , отвечает 404 оши...
Max Dubovsky
3
Второй вопрос: снимаются ли эти ограничения при покупке на fragment хрени за кучу денег? (до 4096 / 2048)
Артем Уколов
3
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
где собака, админ группы? нычкуется и боится проявить волю, в толерантность еще не наигрался? @yelizariev
Ognezar
61
Портфолио: Зовут меня Александр, мне 41 год. Город Киров. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github.co...
Magic
11
Приветствую всех, есть вопросик. Передали проект на OctoberCms, без инсталяшки в полуразвернутом виде, нужно было залить бекап бд, после залития бд, оказалось, что части строк...
Лео
14
Приветствую всех, возникла проблема, до этого писал бота в простом формате где при выполнении условий приходило через send_message информация, сейчас решил добавить хендлер на...
Andrew
4
Карта сайта