web-dev-qa-db-ja.com

ビルド後にWindowsにQtをインストールするにはどうすればよいですか?

Windows上に構築されたQtをインストールする方法に関する情報が見つかりません。
wikiの記事 MacおよびLinuxでシャドウビルドを設定する方法configureスクリプトに-prefixオプションの説明がありますが、このオプションはWindowsでは使用できません。
ビルドフォルダーから直接Qtを使用できることは知っていますが、インストール手順を実行しないのは正しいことではないようです。このアプローチの問題の1つは、サイズです。 Qtのビルドフォルダーは約4GBのスペースを必要としますが、バイナリインストーラーを使用してインストールした後、Qtは約1GBのスペースを必要とします。違いは、ビルド中に作成された一時ファイルによるものだと思います。一部のインストール手順で、必要なファイルのみをインストール(コピー)し、ビルドフォルダーに一時ファイルを残しておくことを願っています。

21
Piotr Dobrogost

イスマイルが言ったように、Windows上のQtのインストール手順はありません。ただし、次の操作を実行することで近似を試みることができます。

  1. クリーニング
    ビルドフォルダーでmake cleanを実行して、すべての一時ファイルを削除します。
  2. 移動
    Qtを「インストール」したい場所にビルドフォルダをコピーします。それをINSTALL_DIRと呼びましょう。
  3. qmake.exe実行可能ファイルにハードコードされたパスの修正
    qmake -queryを実行して、どのパスがqmakeにコンパイル(ハードコード)されているかを確認します。
    a。ビルドフォルダを含むパスを、INSTALL_DIRを使用してqmake -setに置き換えることで修正します(1)。
    または
    b。 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が構成および構築されたディレクトリのハードコードされたパスが含まれます。そのビルドディレクトリを、すべてのlib/*.prlファイルのQtを移動したディレクトリに置き換える必要があります。
  6. ソースを利用可能にする
    シャドウビルド(ソースを含むフォルダー以外のフォルダー内で作成されたビルド)を作成した場合、includeサブフォルダー内のヘッダーのみforward元のヘッダー。例えば; BUILD_DIR\include\QtCore\qabstractanimation.hは次のようになります
    #include "SRC_DIR/src/corelib/animation/qabstractanimation.h"
    ソースを含むフォルダーの存在に依存したくない場合は、SRC_DIR/srcサブフォルダーを宛先フォルダーにコピーし、includeフォルダー内のすべてのヘッダーを修正して次のようにする必要があります。 srcサブフォルダーの新しい場所に転送します。

結論:
WindowsでのQtのビルドプロセスでは、ビルド後にQtを移動(インストール)するのが非常に面倒です。あなたはこれをするべきです...まあ私はこのすべてのトラブルを経験する正当な理由を見つけることができません。

覚えておいてください
簡単な方法は、ビルド後にQtを残したいフォルダーにQtのソースを配置し、このフォルダーでビルドを作成することです。これにより、上記の1と4を除くすべての手順が不要になります。

1)
qmake -setで設定した変数はレジストリキーに保存されます
HKEY_CURRENT_USER\Software\Trolltech\QMake\<QMAKE_VERSION>
このため、同じバージョンのqmakeを使用している異なるバージョンのQtを使用して、異なるプロジェクトを作成したい場合に問題が発生する可能性があります。この場合、より良い解決策はqt.confファイル(実際には、Qtのインストールごとに1つのファイルが必要なためファイル)を使用することです(オプション3b)。

上記の情報の多くは、Gabe Rudyによって作成された RelocationTricks wikiページからのものです。彼の MSVC 2008を使用したビルド済みバイナリのQt(Qt4)オープンソースWindowsインストーラー プロジェクトをチェックしてください。これにより、上記の問題を簡単に解決できます。

27
Piotr Dobrogost

この回答は、上記のPiotr(現在最高評価)の回答のステップ3と5に代わるものですが、達成しようとしていることによっては、彼の回答に他のステップが必要になる場合があります。

要約すると、Qtディレクトリを目的の場所に移動した後、公式のQt installers のいずれかをダウンロードし、次のコマンドライン引数を指定して実行します。

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

<path>を移動した後、Qtディレクトリのフルパスに置き換えます(Qt5を使用している場合はqtbaseディレクトリ)。 Qt 4を使用している場合は、最後のqt5引数を省略してください。

これにより、qmake.exe、.prlファイルなどのハードコードされたパスが修正されます。それはあなたに公式のインストーラーがその点で持っているのと全く同じ振る舞いを与えます。

最初の移動では、nmake "INSTALL_ROOT=\somewhere" installが機能します。これが、Piotrの回答のステップ1と2です。そして、私はステップ4または6、FWIWを必要としませんでした。

14
Oktalist

次のようなプレフィックスオプションを使用して、WINDOWS(Visual Studioビルド)でQT5を構成できます。

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

次に、電話します。

nmake
nmake install

後者はQtをC:\ the\path\I\wantにインストールします。

これまでのところ、Qt5.2.1と5.3.xで問題なく実行しました。したがって、以前の問題は今では修正されているようです。

8
mic

Windowsに「makeinstall」がないと主張するのは非常に奇妙なことです。

私は何度もそれを使用しました、そしてそれが他のプラットフォームでそうであるものではないことに同意します、しかしそれはその目的を果たします。

Qtのmakeinstallを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ビットのビルドを維持するために使用します。

7
rubenvb

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

次に、最後のステップとして(Randyが親切に指摘したように)、qmake.exeにパッチを適用する必要があります。これは、 QtMove という単純なユーティリティを使用して実行できます。この同じツールは、すべてのprlファイルも自動的に更新します。

3
Saul

Windows上のQtはmake installでインストールできません。Windows用のQtインストーラーは、新しいインストール場所のdllとpdbにパッチを適用するだけです。

私が提案するのは、インストールしたい場所にシャドウビルドを行うことです。 *.objファイルを手動で削除して、スペースを節約できます。

3
ismail

ステップ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.exelist oldDirnewDirです。
  • qpatch.exe files-to-patch-windows 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を設定します
  • 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インストールを新しい場所に自動的に更新するスクリプトです。バッチファイルが利用可能です ここ

2
Binh Nguyen

QtMove(http://www.runfastsoft.com)がこれを簡単に実行できる簡単なユーティリティがあります。

再配置されたqmake.exeビルドを実行して.proファイルを作成し、すべてを新しいQtライブラリにリンクする必要があります。

2
Randy