10

Visual Studio IDE を介して開発しながら、GCC コンパイラを利用する方法はありますか?

私たちのプロジェクトはクロスプラットフォームであり、標準に準拠していないコードをチェックインしているため 、同僚から頻繁にトラブルに巻き込まれます (これは VS コンパイラに起因する可能性があります!)。

MSコンパイラを使用してコンパイルできるようにしたいので、デバッグなどを続けることができますが、壊れていないことを確認できるように、GCCを使用してコンパイルするように切り替えたいと思います.他のプラットフォームでのビルド。

これは可能ですか?

4

7 に答える 7

5

私が提案しようとしていることは、まだメイクファイルが必要であるため、以前の返信からのアドバイスを部分的に繰り返しています。または、前にも述べたように、すでにメイクファイルを持っている可能性があります。その場合、これから説明することを達成するための手順はさらに少なくなります。

コードで make または g++ を呼び出すための特定の Windows コマンドライン コマンドがわかったら、Visual Studio プロジェクトで「ビルド前イベント」を作成します。(「プロジェクト プロパティ >> 構成プロパティ >> ビルド イベント >> ビルド前イベント」)。

ビルド前のイベントは、バット ファイル スクリプト、またはマシン上の他のスクリプトを呼び出すことができ、そのスクリプトはエラー コードを返すことができます。基本的に、「スクリプト OK」または「スクリプト失敗」は、スクリプトが Visual Studio に戻すことができる通信量の範囲です。

スクリプトはすべてのビジュアル スタジオ環境変数 ($(InputDir)、$(ProjectDir)、$(SolutionName) など) を自動的に認識するわけではありませんが、スクリプトの呼び出し方法を指定するときにこれらの変数を使用できます。つまり、これらの値を引数としてスクリプトに渡すことができます。

これを設定して、Visual Studio でビルドするたびに、ビルド前イベントが最初にコードで make/g++ を実行しようとするようにします。スクリプト (make/g++ を呼び出すスクリプト) が問題を検出すると、スクリプトはエラーを返し、その場でビルドを停止できます。スクリプトは stdout または stderr に出力でき、その出力は Visual Studio ビルド出力ウィンドウ (通常、「========== ビルド: 3 成功、0 失敗」のようなものが表示されるウィンドウ) に表示されます。 )。

スクリプトを印刷することができます:

「ビルドに失敗しました。移植できないコードが検出されました。make/g++ は次を返しました:.......」

これにより、定期的に Visual Studio からコマンド ラインに切り替えることを覚えておく必要がなくなります。ビルドするたびに自動的に実行されます。

于 2008-09-16T17:13:42.063 に答える
1

確かにこれを行う方法はあります。これは、sony のツールチェーン (gcc に基づく) を使用して PS3 向けに開発する方法です。それがどのように機能するのか正確にはわかりませんが、VS に非常にシームレスに統合されます。

あなたがする必要があるのは、makefile でビルドするようにセットアップするか (おそらく最も簡単です)、VC 引数を gcc 引数に変換するラッパー プログラムを作成することだと思います。また、VS 形式のエラー/警告出力が必要な場合 (それをクリックしてエディターでそのファイル/行を取得できるようにするため)、出力を変換するための何かが必要です。

これは、 VS を WRS/VxWorks バージョンの gcc ツールで使用することに関する関連する議論に役立つ可能性があります。

特に、エラー出力を変換するそこにリンクされているプログラムに注意してください。

于 2008-09-16T06:54:41.710 に答える
1

gcc のコマンドライン オプションは VS とは大きく異なるため、単純な切り替えはないと思います。いずれにせよ、コンパイルを成功させるために設定する必要がある一連のプリプロセッサ定義とビルド変数をビルド システムが設定する可能性があるため、コンパイラを実行するだけでは簡単ではありません。

あなたの同僚が Unix で作業している場合、彼はおそらく make、scons、または cmake ベースのビルド システムを使用しています。Cygwinを使用して、gcc、make、flex、bison、およびその他すべての Unix グッズを含む、標準の Unix ツールチェーンを Windows にインストールできます。ネイティブ バージョンの scons と cmake がありますが、それらは VS を使用しようとするため、役に立ちません。Cygwin を介してそれらをインストールして gcc を強制するかどうかを確認したことはありませんが、それはあなたには関係ないかもしれません。

VS コンパイラを使用するメイク システムを作成することは可能ですが、面倒です (実際に行ったことがあります)。そして別の質問です。;)

その後、特別なビルドステップを使用して、VS 内から gcc コンパイルを実行できます。個別のビルド ターゲット (Debug や Release など) を用意したほうがよいでしょう。それらはプロジェクト ファイルで作成できます (これらは単なる ASCII ファイルです。チェックしてください)。それがどれほど簡単かを知ってください。最新の状態に保つのは少し面倒です。自動的に作成するスクリプトを作成することをお勧めします。

于 2008-09-15T15:24:03.880 に答える
0

おそらく、クロスプラットフォームであるため、プロジェクトのビルドにmakefileをすでに使用しています。VSプロジェクトをさまざまなプロジェクト構成のmakefileプロジェクトにし、さまざまなパラメーターを使用してmakefileを開始し、ビルドがMSVC用かGCC用かを示します。

MSVC makefileビルドがデバッグファイル(PDB)をビルドできる場合(これは実行できるはずです)、VSデバッガーもシームレスに機能します。

次に、Visual Studio内でGCCを使用して構築するのは、ツールバーの[GCC]構成ドロップダウンを選択するのと同じくらい簡単です。

于 2008-09-16T16:44:16.580 に答える
0

Cygwinを試してください。すべてのMakefileを正しく設定している限り、VSとGCCの両方でいつでもコンパイルを試みることができます。

于 2008-09-15T13:43:48.893 に答える
0

プロジェクト ファイルの複雑さによって異なります。

cygwin のような gcc 環境が絶対に必要です。

  • 小規模なプロジェクトまたは単一ファイルのコンパイルでは、カスタム ビルド ツール (rules-file) を使用できます。

  • 大規模なプロジェクト/ソリューションの場合、vcproj/sln-file から autotools configure/makefile を自動生成し、これを IDE 内でコンパイルします。ソース ファイル/gcc の警告とエラーの行は、IDE に相当するものに変換されます (出力ウィンドウでクリック可能)。

于 2008-09-15T16:07:34.913 に答える
0

gcc でコンパイルするために、別の makefile を維持する必要がありました。make の学習には初期費用がかかりますが、コードの詳細な知識と VS C++ と gcc の違いから恩恵を受けることができます。私がこれを行ったとき、私はVC 6を使用していたので、VS 2005で今より良い方法があるかもしれません.

于 2008-09-15T13:39:09.810 に答える