2009-06-18 19 views
8

別々に実行され、execvpコマンドで実行されるプログラムがあります。だから、それは主な方法が必要ですが、私はそれが管理されたmakeと食べるために問題を提起すると信じています。このコードを別のプロジェクトに分けておく必要がありますか、それを同じEclipseプロジェクトに組み込む方法はありますか?Eclipse C++プロジェクトで2つのメインを作成する方法

答えて

1

呼び出されたメークファイルが2つのmain()メソッドを同じ実行可能ファイルにコンパイルしない場合、問題は発生しません。私はEclipseプロジェクトがどのように処理されるのかわかりません - VSのように "プロジェクト"が単一の実行可能ファイルまたはライブラリを意味し、 "ソリューション"が "プロジェクト"のグループである場合、複数のものが必要になるでしょうプロジェクト。 OTOHが "プロジェクト"に "サブプロジェクト"が実行可能なライブラリまたはライブラリである異なる "サブプロジェクト"を含めることができる場合は、それを容易に処理できるはずです。

3

同じプロジェクトに保管し、現在のプロジェクトに含めるメインの種類に応じて異なる定義をするプリプロセッサ定義を使用します。ここでは、メインファイルは同じファイルにありますが、もちろん別のファイルに置くこともできます。

#if defined(MAIN_ONE) 
int main() 
{ 
    // Do stuff 
} 
#elif defined(MAIN_TWO) 
int main() 
{ 
    // Do some other stuff 
} 
#endif 
1

Eclipseビルドシステムを使用して2つのメインを構築する簡単な方法がわかりません。あなたがする必要がある最小の変更は、makefileに移動し、makefileターゲットを使用してビルドすることかもしれません。

代わりに、私はCMakeの使用に移行するようお勧めします。 CMakeを使用して、eclipseで使用するmakefileを生成することができます。 CMakeを使用する利点は、ライブラリをビルドし、ライブラリをリンクして実行可能ファイルを形成する方法を簡単に記述できることです。 CMakeは、Eclipse、Visual Studio、コードブロック、またはメークファイル用のビルドを生成できます(コマンドプロンプトを使用できるようになります)。

7

main()関数を持つ実行可能ファイルごとにプロジェクトを作成し、ソフトウェア全体を表す追加のプロジェクト(ソート「コンテナ」プロジェクト)を作成します。 Eclipseでは、他のプロジェクトの依存関係としてプロジェクトを指定することができます。この場合、コンテナプロジェクトを設定して他のプロジェクトを「参照プロジェクト」として一覧表示する必要があります。

これを行うには、コンテナプロジェクトを作成し、左側の列(プロジェクトエクスプローラ)でプロジェクトを右クリックし、[プロパティ]をクリックします。ダイアログボックスが表示されます。左側のリストの「Project References」項目を選択すると、Eclipseが現在作業しているすべてのプロジェクトのリストが表示されます。個々の実行可能ファイルのプロジェクトの横にあるチェックボックスをオンにして、[OK]をクリックします。今、コンテナプロジェクトのビルドを実行すると、Eclipseはこれらの依存プロジェクトのビルドも自動的に実行します。

このようにサブプロジェクトを使用する場合、コンテナプロジェクトとすべてのサブプロジェクトを含む作業セットを作成すると便利です(これにより、ソフトウェアプロジェクト全体を簡単に検索できます)。

+0

コンテナプロジェクトでは、「すべて」または「クリーン」のターゲットを作成していないと不平を言わないようにどのようにして停止しますか?第二に、どのようにサブプロジェクトの建設順序を指定しますか? (現在、私のプロジェクトには、他のすべてのプロジェクトに依存するライブラリを構築するプロジェクトが1つ含まれていますが、ライブラリは最初に構築されていません(名前を変更することでコンテナプロジェクトを2回構築する必要があります)。 – Urhixidur

+0

@Urhixidur - ライブラリをそれを使用するプログラムの依存としてマークする必要がありますが、私はEclipse UIでそれを行う方法を覚えていません。あなた自身のmakefileを書いているのなら、それはとても簡単です。最初の質問では、単に実際に何もしない場合でもmakeターゲットを定義するだけです。 – bta

0

これはC++言語で作成されています。結果を得るには、それを変更する必要があります。あなたが何をしたいのであれば、の2種類のものをにすることがあります。

関連する問題