web-dev-qa-db-ja.com

通常のwin32(VC ++ vcproj)プロジェクトをQtプロジェクトに変換する方法は?

既存のvcprojファイルを、Visual StudioのQTアドインが認識して有効なQtプロジェクトとして扱うプロジェクトファイルに変換するにはどうすればよいですか?

弾丸をかじって、古いプロジェクトを置き換える新しいプロジェクトを作成してから、既存のコードを追加する必要がありますか?

Qtアドイン1.1.2でQT4.6とVS2008を使用しています。元のvcprojファイルは[〜#〜] not [〜#〜] QMakeで生成されています。

25

Visual Studio 2010+を使用すると、Qtアドインの「プロジェクトをQtアドインプロジェクトに変換する」機能を使用して、プロジェクトをQtアドインプロジェクトに変換できるようになりました。

次の手順は、バグQTVSADDINBUG-27の 回避策 からのものです。これはVisualStudio 2010でテストされましたが、新しいバージョンでも同様に機能するはずです。

  1. 「ソリューションエクスプローラー」でプロジェクトを右クリックし、「プロジェクトのアンロード」をクリックします
  2. 「ソリューションエクスプローラー」でプロジェクトを右クリックし、「。vcxprojの編集」をクリックします
  3. 行を追加<Keyword>Qt4VSv1.0</Keyword>タグ間<PropertyGroup Label="Globals">および</PropertyGroup>
  4. 「ソリューションエクスプローラー」でプロジェクトを右クリックし、「プロジェクトの再読み込み」をクリックします
  5. 「ソリューションエクスプローラー」でプロジェクトを右クリックし、「プロジェクトをQtアドインプロジェクトに変換」をクリックします。

プロジェクトにヘッダーファイルがある場合は、この answer の指示に従って、「GeneratedFiles」フォルダーにmoc_ *ファイルの生成をトリガーする必要があります。

2010より古いVisualStudioのエディションについては、これを参照してください 回避策

30
Benjamin

プライバシー保護のために名前が削除されたNokiaサポートエンジニアからの回答は次のとおりです。

こんにちは、

提案をありがとう。私はそれを将来のリリースのために実装することを検討する開発者に渡しました。次のリンクを使用して追跡できます。

https://bugreports.qt.io/browse/QTVSADDINBUG-27

よろしく、サポートエンジニア、Qt開発フレームワーク、ノキア>

元の質問

Qtを追加したいレガシーvcprojプロジェクトがかなりあります。現在、これらのレガシーvcprojファイルをQt対応のvcprojに変換する簡単な方法はありません。

Qt対応とはどういう意味ですか?

Qtが有効になっていないvcprojで、ソリューションエクスプローラーの下のプロジェクト名を右クリックすると、Qtに関連するすべてのオプションがすべてグレー表示されます。

Nokiaがこの機能をVSTDアドインに追加すると非常に便利です。

Stackoverflowのフェロー、この機能がNokiaによって実装されていることを確認したい場合は、上のリンクで投票してください。 =)

9
sivabudh

Qt VSアドインの代わりに Qt VS Tools を使用します。

指示

.vcxprojファイルで、次の変更を行います。

<Keyword>Qt4VSv1.0</Keyword><Project><PropertyGroup Label="Globals">に追加します( ベンジャミンの答え に従って)。

次の要素を<Project>(ルート要素)に追加します。

  <ProjectExtensions>
    <VisualStudio>
      <UserProperties MocDir=".\GeneratedFiles\$(ConfigurationName)" UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" lupdateOptions="" lupdateOnBuild="0" lreleaseOptions="" Qt5Version_x0020_x64="5.6-msvc2013_64" MocOptions="" />
    </VisualStudio>
  </ProjectExtensions>

属性Qt5Version_x0020_x64の値は、QtVSツールのQtバージョンの名前と一致する必要があることに注意してください。任意の値を設定してから、VisualStudioのQtプロジェクト設定で修正できます。

私のセットアップ

  • Visual Studio 2013
  • Qt VSツール 2.0.0ベータ版(明らかにQt VSアドインのブランド変更)
  • Qt 5.6 msvc2013_64

ノート

ベンジャミンの答え に従って「プロジェクトをQt VS Toolsプロジェクトに変換」しようとすると、VisualStudioがスタックします。

私がプロジェクトで試した唯一のQt固有の機能は、.priファイルのエクスポートです。

テンプレートQt GUIアプリケーションを使用して作成された新しいVSプロジェクトから必要な変更をリバースエンジニアリングしました。

3
Filip Bártek

通常のVCプロジェクトをQTプロジェクトに変換する方が簡単で、Qtクラスを非QTプロジェクトに追加しようとしたときにQtプラグインによって表示されるエラーメッセージは、特に次の場合に非常に役に立ちません。 Qt .vcprojfileとQt以外のファイルの実際の違いを考慮すると、ライブラリとDllに既存のレガシーコードが組み込まれている場合がよくあります。Qtへの移行中に、既存のクラスにQtクラスを追加することをお勧めします。以前は非Qtプロジェクトであったモジュール。モジュールにソースファイルが比較的少ない場合は、プロジェクトをQtプロジェクトとして再作成する方が簡単な場合があります。数百のソースファイルがある場合や他の方法で複雑な場合は、多くの場合、 .vcprojファイルを手作業で編集する方が簡単です。通常の.vcprojとQtファイルを比較することで、違いを簡単に確認できます。

  1. Qtプロジェクトには、ファイルの先頭近くのTargetFrameWorkVersion行の直前にKeyword = "Qt4VS1.0"があります。
  2. ファイルの最後に、必要なグローバル(特に、QtVersion.Win32)を追加する必要があります。
  3. Qtヘッダーファイルの場所をインクルードパスに追加する必要があります(すべてのビルド構成の場合)。これは、後でVisualStudioのユーザーインターフェイスを介して行うことができます
  4. Exeまたはdllの場合は、Qtライブラリの場所とライブラリファイルをリンカーオプションに追加する必要もあります。

実際には、テキストエディターで1と2を実行するだけで、VisualStudioでプロジェクトを再読み込みできます。

インクルードパスとライブラリを設定すると、通常どおりプロジェクトをビルドできるようになります。次に、新しいQtクラスを追加するか、既存のクラスをQtクラスに変換できます。後者を行うには、最初に既存のクラスのソースファイルをプロジェクトから削除します。そうしないと、Qtクラス追加ウィザードが文句を言う可能性があります。

上記の手順は経験豊富なユーザーを対象としているため、手動で編集する前に、既存のプロジェクトの.vcprojファイルを常にバックアップする必要があります。ここでの単純な間違いは、ファイルを使用できなくする可能性があります。

1
Dave Hussey

Qtサポートエンジニアからのより多くの回答。以前は知らなかったので、最初の段落が役立つと思います。

これは本当に誤解だと思います。アドインで生成されたQtプロジェクトがある場合は、このプロジェクトをqmakeで生成されたQtプロジェクトに変更できます。その逆も可能です。 qmake -tp vcを実行して生成された.vcprojがある場合は、これをQtアドインプロジェクトに変換できます。

通常のwin32プロジェクトをQt対応プロジェクトに変換する機能はないため、作成された提案は引き続き有効です。以下を参照してください。

https://bugreports.qt.io/browse/QTVSADDINBUG-27

このレポートの歴史から、閉店して再開したことがわかりますので、そもそも何を探していたのか誤解があったと思います。

Qmakeを使用してプロジェクト用の.proを作成する場合、その.proファイルで「qmake-tpvc」を使用して.vcprojファイルを作成できるはずです。 qmakeのマニュアルはここから入手できます:

http://doc.qt.io/qt-5/qmake-manual.html

これがお役に立てば幸いです。

よろしく、

-

ノキア、Qt開発フレームワーク、サポートエンジニア

1
sivabudh