既存のCコードと既存のMakefileがあり、それらをEclipse Cプロジェクトにラップしたいと思います(Eclipse 3.4 Ganymedeを使用)。コードは次のように構成されています。
メインディレクトリ:/Project/Software
ソースファイルとヘッダーファイル:../Project/Software/CodeDir1 ../Project/Software/CodeDir2
など。
これまで私はこれらのステップを実行してきました:
Software
->という名前で新しいCプロジェクトを作成します。これで、Eclipseはすべてのソースファイルなどをプロジェクトに統合します。初めてこれを行うと、すべてが正常に機能します。私は自分のコンソールに出力を取得し、すべてがクールです。しかし、その後、「ビルドアイコン」(小さなハンマー)がグレー表示になり、クリックできなくなります。プロジェクトのプロパティ-> C/C++ビルドに移動すると、「このプロジェクトはCDTプロジェクトではありません」と表示され、「Java.lang.NullPointerException」というエラーが表示されます。
どうすればプロジェクトを実行できますか?
編集:
単純なバグを回避するために、新しいバージョンのEclipse(Kepler)で同じことを試しました。同じエラー(「CDTプロジェクトなし」)が発生しますが、NullPointer例外はありません。
しかし、問題を少し絞り込むことができます。first makeプロセスを開始すると、常に機能します。ビルドプロセスが失敗した場合でも、ビルドプロパティに移動できます。 1つ取得するとすぐに完全でエラーなしビルドを実行すると、この問題が発生します。これに関しては、Eclipseからmakecallが実行された場合にのみ発生します。コマンドラインから呼び出すと、Eclipseから1つを使い果たすことができます。
問題の原因はEclipseではなく、makefileにあります。
プロジェクト全体のディレクトリ構造は次のとおりです。
Project_Dir\Documentation\
Project_Dir\Output\
Project_Dir\Software\
Project_Dir\Tools\
ソースファイルはすべて\Software\
ディレクトリにあります。そこで、プロジェクトフォルダとしてProject_Dir\Software\
を選択しました。これは、.project
ファイルと.cproject
ファイルがそこにあることを意味します。
Makefile自体は、出力ファイルを\Software\
フォルダーにも一時的に書き込みます。最後に、すべてのファイルをSoftware
ディレクトリからOutput
にコピーします(実際にはmove *.* Project_Dir\Output\
コマンド)
このコマンドはEclipseプロジェクトファイルも移動していたため、Eclipseがそれらを見つけてプロジェクトプロパティを開くのが困難になりました。
2つの解決策:
\Project_Dir\
に変更しますattrib +r +s *.project
とattrib -r -s *.project
。 (.cproject
についても同じです)。これにより、メイクファイルがファイルを移動できなくなります既存のCDTプロジェクトをインポートしていて、「このプロジェクトはCDTプロジェクトではありません」と表示されている場合は、プロジェクトが古いバージョンのEclipseで作成されている可能性があり、次のことを行う必要があります。
Project Explorer
タブでプロジェクトを選択します。これにより、新しい.cproject
ファイルが追加され、準備が整います。
新しいプロジェクトを作成するときは、それをmakefile
プロジェクトとして作成する必要があります。その後、makeを使用してプロジェクトをビルドしますが、ビルドプロパティの設定は、makefileとmake呼び出しを介して行う必要があります。
これ link は、メイクファイルプロジェクトを作成する方法を示しています。
プロジェクトを作成するには:
[ファイル]> [新規]> [プロジェクト]を選択します。
新しいプロジェクトを作成するときは、プロジェクトタイプを指定する必要があります。このプロジェクトタイプは、CDTが使用/表示するツールチェーン、データ、およびタブを決定します。
作成するプロジェクトのタイプを選択します。このチュートリアルでは、C/C++フォルダーを展開し、C++プロジェクトを選択します。 C++プロジェクトウィザードが開きます。イラストを見るにはここをクリックしてください。
デフォルトでは、これらのリストに現在表示されているツールチェーンとプロジェクトタイプのCDTフィルターは、このチュートリアルで選択したC++プロジェクトウィザードの言語サポートに基づいています。
「プロジェクト名」フィールドに「HelloWorld」と入力します。 [デフォルトの場所を使用]オプションを選択したままにします。
次に、作成するプロジェクトのタイプを選択します。新規CDTプロジェクトウィザードでは、次のプロジェクトタイプから選択できます。実行可能-実行可能アプリケーションを提供します。このプロジェクトタイプフォルダには、3つのテンプレートが含まれています。 Hello World C++の例では、main()を使用した単純なC++ HelloWorldアプリケーションを提供しています。 Hello World ANSI Cの例では、main()を使用した単純なC HelloWorldアプリケーションを提供しています。空のプロジェクトは、ファイルを含まない単一のソースプロジェクトフォルダーを提供します。このテンプレートを選択すると、プロジェクトタイプに必要なメタデータファイルのみを含むプロジェクトが作成されます。プロジェクトのターゲットのソースファイルを提供する必要があります。実行可能プロジェクトタイプのメイクファイルは、CDTによって自動的に作成されます。
- 共有ライブラリ-個別にコンパイルおよびリンクされる実行可能モジュール。共有ライブラリ(libxx.so)を使用するプロジェクトを作成するときは、共有ライブラリのプロジェクトをアプリケーションのプロジェクト参照として定義します。このプロジェクトタイプの場合、CDTはオブジェクトファイルを結合して結合するため、オブジェクトファイルは再配置可能であり、多くのプロセスで共有できます。共有ライブラリには、libxx.so.versionの形式を使用して名前が付けられます。ここで、versionは、デフォルトが1の番号です。libxx.soファイルは通常、最新バージョンへのシンボリックリンクです。このプロジェクトタイプのメイクファイルは、CDTによって自動的に作成されます。
- 静的ライブラリ-別のアプリケーション(libxx.a)にリンクできるオブジェクトファイルのコレクション。 CDTは、オブジェクトファイル(つまり。o)を、実行可能ファイルに直接リンクされているアーカイブ(。a)に結合します。このプロジェクトタイプのメイクファイルは、CDTによって自動的に作成されます。
- MakefileProject-メタデータファイルなしで空のプロジェクトを作成します。この選択は、既存のメイクファイルベースのプロジェクトをインポートおよび変更する場合に役立ちます。このプロジェクトタイプの新しいメイクファイルは作成されません。
「VisualC++サポート」のような対応するCDTプラグインをインストール/更新することで、これを克服することができました。