Я не могу найти информацию о том, как установить Qt, встроенный в Windows.
В статье wiki Как настроить теневые сборки на Mac и Linux описание -prefix
в configure
script, но эта опция недоступно в Windows.
Я знаю, что я могу использовать Qt прямо из папки сборки, но, похоже, не стоит делать шаг установки. Одной из проблем с этим подходом является размер; Qt build folder занимает около 4 ГБ пространства, тогда как после установки с использованием двоичного установщика Qt занимает около 1 ГБ пространства. Я предполагаю, что разница связана с временными файлами, созданными во время строительства. Я надеюсь, что какая-то процедура установки установит (скопирует) только необходимые файлы, оставляя временные файлы в папке сборки.
Как установить Qt на Windows после сборки?
Ответ 1
Как сказал Исмаил, нет установки для Qt для Windows. Однако можно попытаться аппроксимировать его, выполнив следующие операции.
- Очистка
Запуститеmake clean
в папке сборки, чтобы удалить все временные файлы. - Перемещение
Скопируйте папку сборки в место, где вы хотите установить Qt. Позвольте называть егоINSTALL_DIR
. - Исправление путей, жестко закодированных в исполняемом
qmake.exe
Запуститеqmake -query
, чтобы узнать, какие пути скомпилированы (hardcoded) в qmake и
а. Исправить пути, содержащие папку сборки, заменив ее наINSTALL_DIR
с помощьюqmake -set
(1).
или
б. Создайте файлqt.conf
в подпапке bin вINSTALL_DIR
, в которой указаны новые пути Qt внутри него. - Добавление текущего каталога для включения пути
В Qt предусмотрены двоичные дистрибутивы, pwd включен вQMAKE_INCDIR
и, таким образом, в ваших проектах включает в себя путь как ".". Это не происходит по умолчанию в настраиваемом Qt, поэтому вам нужно добавить следующую строку в файлmkspecs/YOUR-PLATFORM-HERE/qmake.conf
:QMAKE_INCDIR += "."
- Фиксация
prl
файлов
Когда вы добавляете компонент Qt в файл проекта (например,CONFIG += uitools
), Qt ищет в%QTDIR%/lib/QtUiTools.prl
, чтобы найти зависимости библиотеки этого компонента. Эти файлы будут иметь жестко закодированный путь к каталогу, в котором Qt был сконфигурирован и построен. Вы должны заменить этот каталог сборки тем, на который вы переместили Qt для всех файловlib/*.prl
. - Создание источника
Если вы сделали теневую сборку (созданная внутри папки, отличной от источника, содержащего контактирующие объекты), заголовки в подпапке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 of Pre-built Binaries с проектом MSVC 2008, который дает вам легкое решение вышеуказанных проблем.
Ответ 2
Этот ответ является заменой для шагов 3 и 5 вышеприведенного ответа Piotr (в настоящее время рейтинг), но вам все равно могут потребоваться другие шаги в его ответе, в зависимости от того, чего вы пытаетесь достичь.
- Это операция, которую официальный установщик использует для исправления жестко заданных путей во время установки: qt.520.win32_msvc2012.addons/meta/installscript.qs
- Так выполняется операция: qtpatchoperation.cpp
- Это список файлов, которые он исправляет: files-to-patch-windows-qt5
- И это показывает, как вызвать операцию установщика как отдельную команду из командной строки: Операции (Руководство по установке модуля Qt)
Подводя итог: после перемещения вашего каталога 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.
Ответ 3
Я могу настроить 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, до сих пор. Итак, любые более ранние проблемы, похоже, уже исправлены.
Ответ 4
Очень странные люди утверждают, что в Windows нет "make install".
Я использовал его много раз, и я согласен, что это не то, что есть на других платформах, но оно служит своей цели.
Как я использую Qt 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-битных построек с минимальным размером.
Ответ 5
Qt в Windows не устанавливается с помощью make install
, вы заметите, что установщик Qt для Windows просто исправляет dll и pdbs для нового места установки.
То, что я хотел бы предложить, - это сделать теневую сборку в том месте, где вы хотели бы ее установить. Вы можете вручную удалить файлы *.obj
для экономии места.
Ответ 6
Собственные инструкции по созданию 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
.
Ответ 7
Шаг 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: Установка переменных среды
- установить 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
Вы можете сделать все это с помощью командного файла. Это заняло у меня прекрасное время, чтобы поработать, и это сэкономило мне много времени. Это script для автоматического обновления установки Qt в новых местоположениях. Пакетный файл доступен здесь.
Ответ 8
Существует простая утилита QtMove (http://www.runfastsoft.com), которая легко справляется с этим.
Запускает перемещенный файл qmake.exe для сборки вашего .pro файла, и все должно быть связано с новыми Qt-библиотеками.