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

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

27 ответов

44 просмотра

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...

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

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

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

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Ребят, подскажите, пожалуйста, почему в префиксе к ассетам, которые генерируются через фильтр | theme в шаблоне, стал вдруг появляться index.php? Вот так выглядит ссылка на а...
Виталий
1
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Карта сайта