50

Qt5 をダウンロードして Visual Studio 2012 と統合するにはどうすればよいですか? 直面する問題にはどのようなものがありますか? また、それらの問題をどのように解決しますか?

UPDATE re。ビジュアル スタジオ 2013

Visual Studio 2013 での成功も報告されており、VS 2013 のメモが維持されています。

また、質問の焦点は、 Visual Studio で Qt を構築することのみに重点を置いていることにも注意してください。Visual Studio IDE との統合に関する注意事項もあります。

4

5 に答える 5

77

このメソッドは、Visual Studio 2013 で動作することがテストされています。Visual Studio 2012 および 2013 を使用したビルド済みのバイナリは、OpenGL バージョンを含めて、こちらから入手できます。

ステップ 1: セットアップ

  1. ここからRapidEE をダウンロードしてインストールします。RapidEE は、Windows 環境変数エディターです。これは、このプロセスの残りの部分に非常に役立ちます (そして一般的に)。

  2. DirectX 11 SDK をインストールします。これは現在 Windows 8 SDK の一部であるため、最初にここから入手できる DirectX 10 SDK をインストールする必要があります(ただし、次の文の警告を参照してください)。Visual C++ 2010 再頒布可能パッケージがインストールされていて、おそらくインストールされている場合 (VS 2010 と共に自動的にインストールされます)、ここで説明されている手順に従って、DirectX 10 のインストールを支援してください。DirectX 10 SDK をインストールしたら、DirectX 11 SDKを含むWindows 8 SDK をダウンロードしてインストールしますはい、これは面倒ですが、DirectX 11 SDK を持っていることがわかっていない限り、Qt ビルドは失敗します。

  3. Python.orgまたはAnaconda Pythonから Python for Windows (3.3 で動作する 2.6+ を聞いたことがあります) をインストールします。

  4. ActiveStateから Perl for Windows をインストールします。


ステップ 2: Git (およびビルド) Qt5 (はい、つまり Git を意味します)

  1. qt-project の Web サイトにあるWindows のインストール ガイドに従ってください。

    概要

    上記のリンクと次のメモの詳細を要約すると (エラーがある場合は、次のメモを参照してください。回答がある場合があります)。

    • ビルド エラーを回避するために、Avast をアンインストールします (これがインストールされている場合)。はい、文字通りそれをアンインストールすることを意味します。システムから 100% 削除してください。 非アクティブ化は機能しません。以下の詳細なメモを参照してください。

    • 最初のステップの注意git: 以下の最初のプルにSmartGit を使用しないでください (自分がをしているのか本当にわかっている場合を除きます) 。

    • Git for Windowsがインストールされている必要があります。

    • Qtインストールを配置する場所とcd、任意のコマンド プロンプト ウィンドウからの新しいインストールを含むディレクトリを決定します。(このプロセスは非常に脆弱でエラーが発生しやすいため、個人的には に直接入れていますがC:、これはおそらく必要ありません)。

    • 上記のディレクトリから、次を実行します。

      git clone git://gitorious.org/qt/qt5.git qt5

      これは速いです。完了すると、'stable' ブランチにいるはずですが、念のため、新しく作成されたディレクトリに ing したgit checkout stable後はいつでも実行できます。VS2013 64bitで動作確認済みです。cdqt5git checkout 5.4.1

    • 次の手順に進む前に、現在のコマンド プロンプト ウィンドウを閉じます(Visual Studio コマンド プロンプト ウィンドウでない場合)。これは、次の手順で Visual Studio コマンド プロンプト ウィンドウを使用していることを確認するためです。

    • 次に、32 ビット (x86) または 64 ビットの VS Tools コマンド プロンプトを実行します (Qt5 を 32 ビットまたは 64 ビットのどちらでビルドしているかによって異なります)。これにアクセスするには、[スタート] メニューから見つける必要があります - Program Files-> [Microsoft] Visual Studio 2012/2013->Visual Studio Toolsに移動すると、面白い名前でそこに表示されます。名前には次のフレーズを含める必要がありますNative Tools。32 ビット バージョンx86の名前には が含まれ、64 ビット バージョンx64の名前には が含まれます。

    • cd上記の手順で新しく作成したqt5ディレクトリに移動します。

    • Visual Studio コマンド プロンプト内から、残りの Qt サブモジュールをダウンロードする必要があります。

      perl ./init-repository --no-webkit

      大量のダウンロードが必要なため、このステップの実行には少し時間がかかりますが、まともな接続ではそれほどひどいものではありません。

    • 次に、ダウンロードされない残りの OPTIONAL サブモジュールをinit-repositoryダウンロードします。SmartGit は、この段階からのみうまく機能します (以下のコメントを参照)。

    • Qt のダウンロードが完了すると、次のコマンドでビルド環境が準備されます ([32|64] VS Native Tools コマンド プロンプトを使用して実行する必要もあります)。

      configure -developer-build -opensource -confirm-license -mp -nomake examples -nomake tests -debug-and-release -c++11 -no-warnings-are-errors -platform win32-msvc2012.

      このコマンド ラインに関する注意: このc++11オプションは VS2012 コンパイラでは必要ないかもしれませんが、VS2013 では機能します。これ-no-warnings-are-errorsは、ANGLE の 64 ビット自動ビルドでエラーが発生した場合に必要です。-platformは自動的に に設定されるwin32-msvc2012ため、デフォルトでは Qt の 32 ビット ビルドが使用され、おそらくコマンド ラインで -platform を指定する必要はありません (以前のバージョンの VS がインストールされている場合でも)。VS2013 の場合は、 を使用します-platform win32-msvc2013

      このステップの実行には数分かかりますが、それほど悪くはありません。

    • 最後に、システム上で実際に Qt をビルドするコマンド (VS ネイティブ ツールのコマンド プロンプト内でも実行されます) は次のとおりです。

      nmake

      ビルドが完了するまで何時間も待つ必要があります。 で出力フォルダーを指定した場合-prefix(以下の注を参照)、 を使用nmake installします。それ以外の場合は、それだけです。


ノート:

一般的注意事項

上記のリンクのドキュメントと混同している場合は、参考までに、OpenGL の代わりに (デフォルトで) ANGLE ライブラリが使用されるため、上記の DirectX 11 をインストールする必要がありました。

VS Native Tools コマンド プロンプトを使用して、上記のリンクからすべてのコマンドを実行してください (つまり、、、perl .\init-repository --no-webkitおよびconfigure) nmake。Qt を 32 ビットまたは 64 ビットのどちらでビルドするかに応じて、[32|64] ビット コマンド プロンプト (x86または) を使用します。x64コマンド プロンプトを開いた状態で perl をインストールした場合 (ファイルが にあることを確認してPATHください)、perl がコマンドとして認識されるようにするには、コマンド プロンプトを再起動する必要があります。

「init-repository」を実行する場合 (上記のリンクの手順から)、ドキュメントからは明らかではありませんが、これをperl;経由で実行する必要があります。すなわちperl ./init-repository --no-webkit。ただし、 コマンドと コマンドは直接呼び出されconfigureます。nmake

に渡す非常に便利なオプションの 1 つconfigureは です-mp。これにより、Qt が複数のコアで並行してビルドされ、(長い) ビルド時間が大幅に短縮されます。

-prefix [outfolder]出力フォルダーを指定するには、コマンドに を追加しますconfigure。たとえば-prefix %CD%\output\x64\vc12、64 ビットの Visual Studio 2013 (12.0) ビルドに適した出力 (サブ) フォルダーを使用します。


Unicode サポート (ICU)

Unicode サポートが必要な場合 ( ICU経由))、上記のリンク内に記載されている指示に特に注意してください。要約すると、Windows 用にビルド済みの ICU バイナリは VS 2010 用のみであるため、ICU は VS 2012 で最初からビルドする必要があります。VS 2012 でビルドするのは簡単です。 \allinone、およびデバッグ モードとリリース モードの両方でビルドします (Qt をビルドしているモードに応じて、32 ビット モードまたは 64 ビット モードでビルドします。ICU は出力フォルダーをバイナリ)。(Qt ビルド プロセスは、ICU のデバッグ ビルドとリリース ビルドを適切に見つけます。) エラーなしでビルドする必要があります。次に、<icuroot>\lib へのパスを、"LIB" という (おそらく) 新しい Windows 環境変数の文字列エントリとして追加します (これには Rapid EE を使用できます。LIB を "展開可能な文字列" にします)。エントリが 1 つしかない場合でも RapidEE で)、<icuroot>\include へのパスを (おそらく) 新しい Windows 環境変数 "INCLUDE" に文字列エントリとして追加します。(注: これらのパスを PATH 変数に追加しても機能しません。) Qt のビルド後、追加したこれらのエントリをすべて削除できます。また、するICU dll のランタイム パス (<icuroot>\bin) を環境の PATH 変数に追加しないと、Qt ビルド プロセス (具体的には、uic.exe実行時)で誤解を招くエラーが発生します。最後に、configureコマンド ライン (下記) で、必ず-icu追加のコマンド ライン パラメータとして追加してください。

ICU 障害:

現在、VS2012 コンパイラを使用して Qt5 をビルドすると、ICU が有効になっているときにバグが発生するようです。具体的には、qtbase\src\corelib\codecs\qtextcodec.cppLine 688 (Qt5 v5.02) がコーデック名「US-ASCII」(コーデックが NULL) のコーデックを返せず、後でコーデックを逆参照しようとすると「lrelease.exe」がクラッシュします (追跡できなくなりました)。そのファイル/行番号の、しかしそれは明らかに NULLcodec変数の逆参照です)。残念ながら、これは私の知る限り、WebKit は ICU を必要とするため、VS2012 コンパイラを使用した Qt5 の (少なくとも) 32 ビット ビルドではビルドできないことを意味します。

ICU を有効にした VS2012 コンパイラで Qt5 をビルドできる人がいる場合は、この Wiki を更新してください。

ICUの説明

パスに ICU がある場合、Qt は自動的にそれをビルドします。つまり、フラグ " -icu" は暗黙的に存在します。ただし、これにより、前述の「lrelease.exe」でエラーが発生します。したがって、これを回避するには、configure コマンドにフラグ -no-icu を追加します。


追加のサブモジュール

デフォルトのサブモジュールに加えてサブモジュールが必要な場合は、コマンドの完了後にSmartGit (またはコマンド ライン) を使用できますinit-repository。コマンド ラインにパスをコピーする必要がなく、ユーザー インターフェイスを直接使用できるため、おそらく SmartGit が最も簡単です。

警告:オプションのサブモジュールをダウンロードqlalrないでください。Qt ビルド全体と組み合わせてビルドすることはなく、Qt のユーザーには必要ありませんが、Qt の内部開発にのみ使用されます。

警告:シェル コマンド ラインの後に をperl .\init-repository --no-webkit使用する必要があります (SmartGit ではありません)。これらの手順では、デフォルトの Qt サブモジュールのみが適切にダウンロードされます。SmartGitは現在、サブモジュールを適切に処理しないため SmartGit を使用して Git ファイルを複製およびダウンロードしないでください。git://gitorious.org/qt/qt5.git代わりに、標準の Windows シェル コマンド プロンプトを開き (必ずしも VS Tools のコマンド プロンプトではなく、コマンド プロンプト アプリケーションを使用します)、(Git がシステムに適切にインストールされていると仮定します。SmartGit のインストールでは、これが自動的に行われる場合と行われない場合があります。ない場合は、Git for Windowsに移動して直接インストールします)git clone git://gitorious.org/qt/qt5.gitコマンド ラインから直接入力します。おそらくそれに続くgit checkout stable(このブランチがデフォルトでチェックアウトされているかどうかはわかりません); 次に、コマンド ラインperl .\init-repository --no-webkitを使用して DEFAULT リポジトリをプルダウンします (ICU を必要とする WebKit を除き、ICU は VS2012 を使用する 32 ビット Qt5 ではビルドできないようです。コメントを参照してください)。

したがって、必要なすべての Qt ソース ファイルをダウンロードする手順は次のとおりです。 1. Windows コマンド ラインを使用して最初のgit clone git://gitorious.org/qt/qt5.git. 2. perl .\init-repository --no-webkitVS Tools 2012 コマンド プロンプト内から実行します。オプションで 3. SmartGit (上記のリンクから) (または同等のもの) を使用して「既存のプロジェクトを開き」(Qt5 ルート フォルダーを選択)、SmartGit 内からプルを実行して、既定以外のリポジトリをダウンロードします (ただし、ダウンロードはしませんqlalr) 。 . それでおしまい; システムに必要なすべての Qt ファイルとオプションの Qt ファイル (サブモジュールを含む) があります。

ビルドに失敗した、および/または内部使用のみ (および ) である他のオプションのサブモジュールを誰かが発見した場合は、qlalrこの Wiki を更新してそれらを指定してください。

一般に、経由で取得したデフォルトのサブモジュールperl .\init-repository --no-webkitで十分です。他の (デフォルト以外の) モジュールを知っている場合、または後で見つけた場合は、後でいつでも追加できます。


一般的な問題

ある時点で、コマンド「python」(または類似のもの) が認識されないというエラーが表示された場合は、python.exe(または適切な.exe) を含むフォルダーがパス変数の一部であることを確認してください。そうでない場合は、それを追加して (便宜上、前述の RapidEE を使用してください)、実行していたことをもう一度試してください。そこにある場合は、コマンドをパスに追加した後にコマンドプロンプトを再起動したことを確認してください。

他の 2 つのパス関連の問題に注意することが重要です(上記のリンクに関連するドキュメントから引用): および " sh.exe が PATH にある場合、ビルドできない可能性があります (たとえば、git または msys のインストールが原因です)。このようなエラーは、qt5-srcqtbasebinqmake.exe: command not found などで示されます。この場合、 、sh.exe がパスにないことを確認してください。インストールが既に構成されている場合は、再構成する必要があります。

プロセス中に、ファイルを使用してエラーが発生する場合がありnmakeます。その場合は、そのディレクトリに移動して、問題のファイルを強制的にビルドしてください。その後nmake、Qt5 でプロセスを再開します。


特定の問題

警告: Qtプロセス中 (および安全のために、このプロセス全体を通して)ウイルス対策ソフトウェアとサンドボックスを無効にする必要がある場合があります。nmake内部的に、Qt はウイルス対策プログラムが干渉する可能性のある多くの実行可能ファイルを (場合によってはサイレントに) 実行します。特に、サンドボックス ソフトウェアを使用している場合は、必ずサンドボックスを無効にしてください。

警告: アバスト! サンドボックス ユーザー: アバスト サンドボックスにはバグがあり、アバストの自動サンドボックスを無効にしてもサンドボックスはオフにならず、rccQt のビルド プロセス中に Qt のプログラムによって自動的に作成されたすべてのリソース ファイルがサイレントにサンドボックス化されます。アバストの自動サンドボックス機能をインストールしているユーザーは、自動サンドボックスがオフになっていても、Qt ビルドは常に失敗します。この問題を解決する唯一の方法は、AVAST を完全にアンインストールすることです! Qt をビルドする前にシステムから。アバストを再インストールできます!Qtビルドが完了した後。


Qt5 のコンパイルには長い時間がかかる場合があります (-mp マルチスレッド オプションを使用しても数時間)。忍耐。


ステップ 3: Qt5 と Visual Studio 2012 の統合

  1. Visual Studio Qt5 アドインをダウンロードしてインストールします。ページの下部にある「その他のダウンロード」セクションにあり、Visual Studio Express では動作しません。

  2. Visual Studio 2012 を開き、Qt Options(トップ メニュー バーの「Qt5」の下にあります) に移動します。

  3. [Qt バージョン] タブで、Qt5 が既に存在するかどうかを確認します。そうでない場合は、[追加] をクリックし、バージョン名 (おそらく 5.xx などの名前) を選択して、qmake.exe(通常はC:\Qt\qt5\qtbase) を含むフォルダーに移動します。

  4. Qt オプション ダイアログを終了します。

  5. 新しい Visual Studio プロジェクトを作成します。[新しいプロジェクト] ダイアログが表示されると、[Qt5 Projectsテンプレート] オプションが表示されます。

  6. 新しい Qt プロジェクトを作成したら、それを右クリックして [QMake で生成されたプロジェクトに変換] を選択します。プロジェクトをビルドし、もう一度右クリックして、[プロジェクトを Qt アドイン プロジェクトに変換] を選択します。再度ビルドしてから実行します。これで Qt プロジェクトが動作するはずです。


Qt5 を既存の Visual Studio 2012 VC++ プロジェクトに追加する

このセクションは、うまくいく場合とうまくいかない場合があります。問題が発生した場合、または追加/より良い解決策がある場合は、コメントを残すか、適切な手順を編集してください。

  1. VS でプロジェクトを右クリックし、[プロジェクトのアンロード] を選択します。再度プロジェクトを右クリックし、「[プロジェクト名].vcxproj の編集」を選択します。これによりプロジェクト ファイルが開き、Qt5 を追加できるようになります。

  2. <Keyword>Global PropertyGroup に移動し、 Qt4VSv1.0 に追加または変更します。

  3. プロジェクトをリロードし、右クリックして [プロジェクトを Qt アドイン プロジェクトに変換] を選択します。

  4. 変換が完了するのを待ち (数秒以上かかることはありません)、 を選択しますQt5>Project Settings。[モジュール] タブに移動し、プロジェクトが依存するモジュールを確認します (基本的なものは、、、CoreおよびWidgetsですGUI)。

  5. ここの手順に従って、ディレクトリを追加します$(QTDIR)\include


    ノート:

    を含める場合はいつでも、との競合を防ぐために、そうする前にwindows.h行う必要があります。#define NOMINMAX qdatetime.h

    上記の手順が完了したら、 を選択して、プロジェクトを Qt Creator で使用できるようにすることができますQt5>Create basic .pro file


エンディング ノート:このガイドに含まれる情報に関連する質問がある場合は、新しい質問として投稿してください (ここでは回答ではありません)。回答または回答へのリンクが追加される場合があります。

于 2013-04-09T04:19:38.097 に答える
6

http://qt-project.org/downloadsで利用可能な Visual Studio 2012 用のビルド済みバージョンの Qt 5.2 があることに言及したいだけです。したがって、ソースから Qt 5 をビルドすることに特別な関心がない場合は、ビルド前のバイナリも使用できます。

また、 Tver-Soft の Web サイトでは、さまざまなコンパイラ バージョン用のプリコンパイル済み (x64) バイナリがいくつか入手できます。

于 2013-12-16T17:49:23.293 に答える
2

Visual Studio 2015 で Qt 5.5 をコンパイルします。

1-configure.exeを生成できるように、qtbaseディレクトリのconfigure.batを変更します(最初の18行のみ)

  @echo off
set QTSRC=%~dp0
set QTDIR=%CD%
rem if not exist %QTSRC%.gitignore goto sconf
echo Please wait while bootstrapping configure ...
 
for %%C in (cl.exe icl.exe g++.exe perl.exe) do set %%C=%%~$PATH:C
 
rem if "%perl.exe%" == "" (
rem    echo Perl not found in PATH. Aborting. >&2
rem    exit /b 1
rem )
if not exist mkspecs (
    md mkspecs
    if errorlevel 1 goto exit
)
rem perl %QTSRC%bin\syncqt.pl -minimal -module QtCore -outdir "%QTDIR%" %QTSRC%
rem if errorlevel 1 goto exit

2-configure -opensource -confirm-license -mp -nomake examples -nomake tests -release -c++11 -no-warnings-are-errors -platform win32-msvc2015 -no-ltcg

3-nmake

于 2015-09-23T13:51:27.603 に答える