2

私は現在、Eclipse Junoを使用し、CDTとCygwinC++を使用した入門的なC++プロジェクトに取り組んでいます。私はMVCアーキテクチャを使用しており、実行可能ファイルを実行していくつかの結果を確認できるようになるまでコードを取得しました。アプリケーションをビルドするとき、コンパイラーはエラーをスローしません。ただし、Eclipseを介してアプリケーションを実行すると、アプリケーションが再構築され、次のエラーが表示されます。

make: *** multiple target patterns.  Stop.  GasFinderTUI.d KyleGasStationFinder/Debug/src/View  line 1  C/C++ Problem

そのファイルからの私のコードは次のとおりです。

src/Controller/GasFinderController.d src/Controller/GasFinderController.o:  \
 ../src/Controller/GasFinderController.cpp \
  ../src/Controller/GasFinderController.h \
  C:/Users/Kyle/Dropbox/Workbench/KyleGasStationFinder/src/Model/LocalGasStations.h \
  C:/Users/Kyle/Dropbox/Workbench/KyleGasStationFinder/src/Model/GasStation.h \
  C:/Users/Kyle/Dropbox/Workbench/KyleGasStationFinder/src/Model/GasPump.h \
  C:/Users/Kyle/Dropbox/Workbench/KyleGasStationFinder/src/Model/Utilities.h

../src/Controller/GasFinderController.h:

C:/Users/Kyle/Dropbox/Workbench/KyleGasStationFinder/src/Model/LocalGasStations.h:

C:/Users/Kyle/Dropbox/Workbench/KyleGasStationFinder/src/Model/GasStation.h:

C:/Users/Kyle/Dropbox/Workbench/KyleGasStationFinder/src/Model/GasPump.h:

C:/Users/Kyle/Dropbox/Workbench/KyleGasStationFinder/src/Model/Utilities.h:

run関数を使用せずに、クリーニングと再構築を試みましたが、アプリケーションは正常にビルドされます。また、Eclipseを使用せずに実際の.exeファイルを実行しましたが、アプリケーションは期待どおりに実行されます。アプリケーションをEclipseとは別に実行することもできますが、近い将来、C ++でいくつかのアプリケーションを作成する予定であり、Eclipseから実行できることを期待しています。これらのアプリケーションもEclipseを使用して検査および評価され、私のインストラクターもこの便利さを望んでいると確信しています。

相対パス名または/cygwin/ c /のいずれかのC:/を変更することを推奨するこの質問を見てきました。私の他の.dファイルとインクルードパスは相対パスを利用しており、これらのファイルは問題を引き起こしません。これらのソリューションはどちらも機能すると思いますが、.dファイルはコンパイルごとに再作成されます。私が行ったすべての変更は、ビルドごとに上書きされています。

EclipseやCygwinC++には、将来この問題が発生するのを防ぐことができる設定が含まれていますか?

4

2 に答える 2

3

実行するたびに手動でプロジェクトをクリーンアップした場合にのみ、Eclipse内でプロジェクトを実行できることがわかりました。また、各ビルドの前に手動でクリーンアップすると、ビルドは成功します。この割り当てを送信した後、コンパイル用のカスタムスクリプトの作成を検討します。

于 2013-01-27T00:06:40.983 に答える
1

外部の「GnuMake」ビルダーを使用するときに、「複数のターゲットパターン」エラーを削除することもできます。私はCDT8.3.0でEclipseKeplerを使用しており、次のことを行いました。

  1. すべてのビルド構成のパスを含める、つまりプロジェクトのプロパティ| C /C++ビルド| 設定| CygwinC[またはC++]コンパイラ| 含む、
  2. 必要な各インクルードパスの2つのバージョンを配置します。Cygwinスタイルの後にWindowsスタイルが続きます。例:
    / cygdrive / d / cygwin64 / usr / share / whatever / include
    D:/ cygwin64 / usr / share / whatever / include
  3. これにより、各ビルド構成のソースディレクトリ内の依存関係ファイル(* .d)は、依存関係でCygwinスタイルのパスを使用します。これにより、これらのファイルのコロン':'文字が原因で、上記のエラーが削除されます。 @andrewdotnは言った。
  4. これにより、CDTはC / C ++ソースファイル内のインクルードファイルを見つけることもできます。これは、通常、Windowsスタイルのインクルードパスを検索するときにそれらを見つけるためです(注:ビルドツールチェーンとして、MinGWではなくCygwinを使用しています)。

上記は特定のツールチェーン設定に固有のものであると認識していますが、少なくとも、管理対象のMakeプロジェクトを適切に機能させるための代替方法が可能です。

ちなみに、これはStackOverflowに関する私の最初の投稿なので、エチケットの間違いを犯した場合、それは意図的ではありません:)

于 2015-01-02T03:59:29.913 に答える