Как установить Qt на Windows после сборки? - PullRequest
19 голосов
/ 15 января 2011

Я не могу найти какую-либо информацию о том, как установить Qt, встроенную в Windows.
В вики-статье Как настроить теневые сборки на Mac и Linux есть описание опции -prefix в скрипте configure, но эта опция недоступна в Windows.
Я знаю, что могу использовать Qt прямо из папки сборки, но, кажется, неправильно выполнять шаг установки. Одна проблема с этим подходом - размер; Папка сборки Qt занимает около 4 ГБ пространства, тогда как после установки с использованием бинарного установщика Qt занимает около 1 ГБ. Я думаю, что разница связана с временными файлами, созданными во время сборки. Я надеюсь, что некоторые процедуры установки позволят установить (скопировать) только необходимые файлы, оставив временные файлы в папке сборки.

Ответы [ 8 ]

26 голосов
/ 15 января 2011

Как сказал Исмаил, на Qt нет шага установки для Windows. Однако можно попытаться приблизить его, выполнив следующие операции.

  1. Очистка
    Запустите make clean в папке сборки, чтобы удалить все временные файлы.
  2. Moving
    Скопируйте папку сборки в то место, где вы хотите "установить" Qt. Давайте назовем это INSTALL_DIR.
  3. Исправление путей, жестко закодированных в qmake.exe исполняемом файле
    Запустите qmake -query, чтобы увидеть, какие пути скомпилированы (жестко запрограммированы) в qmake и
    а. Исправьте пути, содержащие папку сборки, заменив ее на INSTALL_DIR, используя qmake -set (1).
    или
    б. Создайте файл qt.conf во вложенной папке bin INSTALL_DIR, указав в нем новые пути Qt.
  4. Добавление текущего каталога для включения пути
    В предоставляемых Qt бинарных дистрибутивах pwd включен в QMAKE_INCDIR и, таким образом, заканчивается в ваших проектах, включая путь как ".". Это не происходит по умолчанию в пользовательском Qt, поэтому вам нужно добавить следующую строку в файл mkspecs/YOUR-PLATFORM-HERE/qmake.conf:
    QMAKE_INCDIR += "."
  5. Исправление prl файлов
    Когда вы добавляете компонент Qt в файл проекта (например, CONFIG += uitools), Qt просматривает %QTDIR%/lib/QtUiTools.prl, чтобы найти библиотечные зависимости этого компонента. Эти файлы будут иметь жестко заданный путь к каталогу, в котором Qt был сконфигурирован и собран. Вы должны заменить этот каталог сборки на тот, куда вы переместили Qt, для всех файлов lib/*.prl.
  6. Обеспечение доступности источника
    Если вы создали теневую сборку (сборку, выполненную в папке, отличной от источника, который связан с источниками), заголовки в подпапке include только пересылают к исходным заголовкам. Например; BUILD_DIR\include\QtCore\qabstractanimation.h выглядит так
    #include "SRC_DIR/src/corelib/animation/qabstractanimation.h"
    Если вы не хотите зависеть от существования папки, содержащей источники, вам необходимо скопировать подпапку SRC_DIR/src в папку назначения и исправить все заголовки в папке include, чтобы они перешли на новое местоположение src вложенная.

Суть:
Процесс сборки Qt под Windows делает действительно неудобным перемещение (установку) Qt после сборки. Ты должен делать это только в том случае, если ... ну, я не могу найти вескую причину, чтобы пройти через все эти проблемы

Помните
Самый простой способ - поместить исходники Qt в папку, где вы хотите, чтобы Qt оставался после сборки, и сделать сборку в этой папке. Это делает все шаги, кроме 1 и 4 выше, ненужными.

1)
Переменные, которые вы установили с помощью qmake -set, сохраняются в разделе реестра
HKEY_CURRENT_USER\Software\Trolltech\QMake\<QMAKE_VERSION>.
Из-за этого у вас может возникнуть проблема, когда вы хотите иметь разные проекты, использующие разные версии Qt, которые имеют одинаковую версию qmake. В этом случае лучшим решением будет использование файла qt.conf (на самом деле это файлы, так как вам нужен один файл для каждой установки Qt) (опция 3b).

Многие из вышеприведенной информации взяты с RelocationTricks вики-страницы, созданной Гейбом Руди. Посмотрите его Qt (Qt4) Opensource Windows Installers предварительно собранных двоичных файлов с MSVC 2008 , который дает вам простое решение вышеуказанных проблем.

14 голосов
/ 14 июля 2013

Этот ответ заменяет шаги 3 и 5 приведенного выше ответа Петра (в настоящее время с самым высоким рейтингом), но вам могут понадобиться другие шаги в его ответе, в зависимости от того, чего вы пытаетесь достичь.

Подводя итог: после перемещения вашего каталога Qt туда, куда выесли хотите, скачайте любой из официальных установщиков Qt и запустите его со следующими аргументами командной строки:

cd <path>
installer.exe --runoperation QtPatch windows <path> qt5

Замените <path> полным путем к вашему каталогу Qtпосле того, как вы переместили его (каталог qtbase, если вы используете Qt 5).Опустите последний аргумент qt5, если вы используете Qt 4.

Это исправит жестко заданные пути в файлах qmake.exe, .prl и других.Это дает вам то же поведение, что и официальные установщики в этом отношении.

Для начального хода nmake "INSTALL_ROOT=\somewhere" install работает для меня.Итак, это шаги 1 и 2 из ответа Петра.И мне не нужны шаги 4 или 6, FWIW.

8 голосов
/ 04 августа 2014

Я могу настроить QT 5 в WINDOWS (сборка Visual Studio) с параметром префикса, например:

configure -prefix C:\the\path\I\want ...

затем позвоните:

nmake
nmake install

и последний установит Qt в C: \ the \ path \ I \ want.

Пока я делал это без проблем с Qt 5.2.1 и 5.3.x. Итак, все предыдущие проблемы, кажется, уже исправлены.

7 голосов
/ 15 января 2011

Очень странно, что в Windows нет "make install".

Я использовал это много раз, и я согласен, что это не то, что есть на других платформах, но оно служит своей цели.

Как использовать Qt's make install в Windows (из cmd):

configure
(n/mingw32-)make
(n/mingw32-)make docs
(n/mingw32-)make install

Бит make install копирует все необходимые заголовки, чтобы иметь возможность удалить исходный каталог. Удалить все объекты и ненужные вещи:

del /S /Q *.obj lib\*.dll
rmdir /S /Q docs-build qmake tools src

Это позволяет удалить исходный каталог. Я не знаю, какое влияние это оказывает на отладку исходного кода Qt, но это, безусловно, уменьшает размер теневой сборки. Я использую его для поддержки 32- и 64-битных сборок с минимальным размером.

3 голосов
/ 08 ноября 2012

Собственные инструкции по сборке Qt показывают, как это делается, путем поиска / замены в каждом файле Makefile. Предполагая, что источник был извлечен в C: \ qt-4.8.3 и сборка была выполнена в этом каталоге, сделайте следующее:

fart -c -i -r Makefile* $(INSTALL_ROOT)\qt-4.8.3 $(INSTALL_ROOT)\my-install-dir
set INSTALL_ROOT=
mingw32-make install

Затем создайте файл конфигурации, который сообщит qmake о его новом пути установки. Создайте текстовый файл C: \ my-install-dir \ bin \ qt.conf:

[Paths]
Prefix=C:/my-install-dir
Translations = translations

Затем, в качестве последнего шага (как любезно указал Рэнди), вам необходимо исправить файл qmake.exe, что можно сделать с помощью простой утилиты QtMove . Этот же инструмент также автоматически обновляет все файлы prl.

3 голосов
/ 15 января 2011

Qt в Windows не устанавливается с make install, вы заметите, что установщик Qt для Windows просто исправляет dlls & pdbs для нового места установки.

Я бы предложил создать теневую сборку в том месте, где вы хотели бы ее установить. Вы можете вручную удалить *.obj файлы, чтобы сэкономить место.

2 голосов
/ 21 октября 2011

Есть простая утилита QtMove (http://www.runfastsoft.com) может сделать это легко.

Запускает перемещенный qmake.exe, создает ваш .pro файл, и все должно быть связано с новыми библиотеками Qt.

2 голосов
/ 31 января 2011

Шаг 1: Переместить Qt

  • вырезать и вставлять
  • Текущий каталог - C: \ tools \ Qt
  • Каталог назначения -C: \ sim \ dep \ Qt

Шаг 2: Получить старый каталог Qt

  • Перейти к C: \ sim \ dep \ Qt \ 2010.02.1 \ Qt
  • Открыть .qmake.cache
  • Найти переменную QT_SOURCE_TREE
  • Обратите внимание на значение QT_SOURCE_TREE
  • Мой был C: \ tools \ Qt \ 2010.02.1 \ Qt

Шаг 3: Патч Qt

  • Перейти к C: \ sim \ dep \ Qt \ 2010.02.1 \ bin
  • Синтаксис: qpatch.exe список oldDir newDir
  • qpatch.exe файлы для окна исправления C: \ tools \ Qt \ 2010.02.1 \ Qt C: \ sim \ dep \ Qt \ 2010.02.1 \ Qt

Шаг 4. Установка переменных среды

  • set QTDIR = C: \ sim \ dep \ Qt \ 2010.02.1 \ Qt
  • set QMAKESPEC = C: \ sim \ dep \ Qt \ 2010.02.1 \ Qt \ mkspecs \ win32-g ++
  • set PATH =% path%; C: \ sim \ dep \ Qt \ 2010.02.1 \ Qt \ bin
  • set PATH =% path%; C: \ sim \ dep \ Qt \ 2010.02.1 \ bin

Вы можете сделать все это с помощью командного файла. Это заняло у меня немало времени, и я сэкономил много времени. Это скрипт для автоматического обновления установки Qt на новые места. Пакетный файл доступен здесь .

...