web-dev-qa-db-ja.com

既存のC ++ソースコードをVisual Studioにインポートする

特定のMSツールを利用するために、既存のc ++アプリケーションのソースをVisual Studioにインポートしようとしています。しかし、オンラインで検索してVisual Studioで遊んだ後、既存のC++ソースコードをVisual Studioにインポートして、構造的にそのままの状態を維持する簡単な方法を見つけることができないようです。

私が見つけたインポート容量は、ディレクトリを平らにし、それらすべてを1つのプロジェクトに入れます。何か不足していますか?

(これはすべてアンマネージC++で、win/unix用の特定のビルドが含まれています)

20
pinvoke

与えられた制約の下での一般的な解決策は認識していません。具体的には、ソースツリーから多くのプロジェクトを作成する必要があります。

私が目にする最良のオプションは、実際にスクリプトでプロジェクトファイルを作成することです。

  • 単一のプロジェクトを手動で作成(空のプロジェクトを作成してからファイルを追加)、
  • 可能な限り近くに構成します(プリコンパイル済みヘッダー、ビルド構成などを使用)。
  • 作成するプロジェクトファイルのスケルトンとして作成された.vcprojを使用します

非常に単純な方法は、リスト、プロジェクト名などを「奇妙なトークン」でファイルし、ジェネレーターでそれらを埋めるでしょう。いい人になりたいのであれば、もちろんXML処理ライブラリを使用できます。


私たちの経験:実際には.vcprojと.slnをリポジトリ(git)に保存しなくなりましたが、pythonスクリプトをソースツリーとVS 2008の「プロパティシートテンプレート」(またはそれらが何と呼ばれていても)これは、一般的な調整を行うのに役立ちます。

プロジェクト生成スクリプトには、すべてのプロジェクトの専門分野に関する情報が含まれています(たとえば、MFC/ATLを使用すると、DLLまたはEXE、除外するファイルが作成されます)。

さらに、このスクリプトには、実際のビルドスクリプトを供給する依存関係も含まれています。

これは非常にうまく機能し、問題は軽微です:pythonビルドシステムで要求され、プロジェクトファイルを再生成することを忘れずに、私はいくつかを学ぶ必要がありますpython一部のプロジェクトに調整を加える。


@Michael Burr "pythonスクリプトとサポートする「テンプレート」が必要なものはどれくらい複雑ですか?"

別の開発者(pythonを選んだ人)にタスクを渡したので、正直に言えません。 VS2008ソリューションのビルドはニーズに十分対応できず、古いバッチファイルは並列化をサポートしていなかったため、元のタスクはビルドスクリプトを提供することでした。 .vcproj世代が後で追加されました。私が理解しているように、彼のスクリプトは.vcprojファイルと.slnファイルを最初から生成しますが、別のプロパティシートからすべての設定を取り込みます。

長所:

  • その場で新しい構成を追加します。一部のプロジェクトにはすでに6つの構成があり、Unicodeサポートの計画では、しばらくの間それらを2倍にすることを検討する必要がありました。一部の厄介なツールは依然としてMBCSとしてビルドされるため、一部のライブラリには8つの構成があります。手作業で設定するのは面倒ですが、今ではもう気になりません。

  • 世界的な変化、例えば満足のいく解決策が見つかるまで、相対プロジェクトパス、一時ファイルおよび最終バイナリのフォルダーを移動します。

  • 安定性を構築します。 VC6プロジェクトファイルをマージすることは、さまざまな理由でエラーの顕著な原因であり、VC9プロジェクトファイルは見栄えがよくありませんでした。プロパティシートでのコンパイル/リンク設定、スクリプトでのファイル処理など、物事がより孤立しているように見えます。また、スクリプトは主にデフォルトからのバリエーションをリストし、プロジェクトファイルよりも読みやすくなっています。

一般的に、プロジェクトが既に設定されていて、かなり安定していて、実際に問題が発生していない場合、大きなメリットはないと思います。ただし、nknown(私たちの場合:主にVC6-> VC9およびUnicodeビルド)に移行すると、柔軟性により実験のリスクが大幅に減少しました。

9
peterchen

プロジェクト/ソリューションがロードされていない状態で、Visual Studio 2005に次のメニュー項目が表示されます。

ファイル>既存のコードからの新しいプロジェクト...

ウィザードに従って、私の問題は解決しました!

[すべてのファイルを表示]ボタンを切り替えると、すべてのディレクトリとファイルが含まれる完全な階層が表示されます。

[既存のコードからの新しいプロジェクト...]オプションが利用できない場合は、[ツール]> [カスタマイズ...]で追加する必要があります。

Tools > Customize... Commands tab, File menu, Add Command button, File menu, New Project From Existing Code...

13
Zac

新しい空のソリューションを作成し、それにソースコードを追加します。

例えば、

File> New> Project ... Visual C++> Win32> Win32 Console Application Application Settings>-「プリコンパイル済みヘッダー」のチェックを外します-「Empty Project」をチェックします

その後、プロジェクトが作成されます。既存のコードを追加するには:

プロジェクト>既存のアイテムを追加...>-追加するファイルを選択

再コンパイル、完了!

2
John Dibling

この質問はすでに正しいとマークされていますが、「ファイル」->「既存のコードから新しいプロジェクト」を実行することで、Visual Studio 2008を使用してプロジェクトに既存のコードをインポートできました。私のコードのディレクトリ構造は保持されました。

1
Brian

「ソリューションエクスプローラー」で、「すべてのファイルを表示」ボタンをクリックして、ファイルシステムに存在するファイル(ディレクトリとすべて)をVisual Studioに表示させることができます。

私の意見ではこれは不完全な回避策ですが、私はそれが利用可能な最良のものであると信じています。プラグイン、マクロ、またはファイルシステムをミラーリングするフォルダーを含む実際のプロジェクトにディレクトリをインポートする他のツールを知りません。

1
Michael Burr

プロジェクトメニューからいつでもビューを切り替えることができます

たとえばプロジェクト->すべてのファイルを表示

上記は、フォーマットされていないrawファイルシステムの順序でファイルを表示します。

古いバージョンはわかりませんが、VS 2010で動作します

1
Ronald Jacob

わかりました。同じ問題があります。多くの.cppファイルと.hファイルは、このフォルダー構造用に記述されたインクルードパスを持つ多くのフォルダーとサブフォルダーに整理されています。このフォルダー構造をソースファイルと一緒にインポートする唯一の方法は、[すべてのファイルを表示]を使用してフォルダーを右クリックし、[プロジェクトにインポート]を選択することです。これは、C-Sharpプロジェクトを使用している場合に役立ちます。しかし、私のC++プロジェクトでは機能しません。私はまだ解決策を探しています...

0
ISTB