複数のmain
関数を含む複数のファイルを含むいくつかのソフトウェアのサンプルディレクトリがあります。これらのファイルをすべて1つのプロジェクトにアセンブルし、コンパイルして、main already defined
エラーが発生することなく特定のファイルを実行できますか? cppファイルごとに個別のプロジェクトを作成したくないとします。
[〜#〜]更新[〜#〜]
(存在する場合)シンプルなワンクリックソリューションが必要です。ファイルをフォルダに分散したり、ファイルのコンテンツをリファクタリングしたりしたくありません。たとえば、Eclipse/Javaでは、mainで任意のファイルを右クリックして実行できます。また、1つのプロジェクトに多数のメインファイルを含めることができます。これはVisualStudio/CPPで可能ですか?
更新2
C++がJava=ではなく、Visual StudioがEclipseではないことを知っています。私の質問は、いくつかの手動操作の自動化についてです。
私はOpenCVを使用していませんが、cmakeを使用しており、サンプルディレクトリにCMakeLists.txtがあります。 cmake here を使用してサンプルを構築することについての議論があります。
Cmake自体は何もビルドせず、ターゲットプラットフォーム用のビルドスクリプトを生成し、Visual Studioにロードできるソリューションファイルとプロジェクトファイルを作成できるはずです。
これらのmain
関数を別々の名前空間に配置してから、定義する必要があります。
File1.cpp
namespace F1
{
int main(int argc, char * argv[])
{
// ...
}
}
The-real-main.cpp
int main(int argc, char * argv[])
{
if (whatever)
return F1::main(argc, argv);
}
編集する:追加情報への応答。
C++はJavaで、VSはEclipseではありません)VSで複数のプログラムを一度に維持する自然な方法は、単一のソリューションに複数のプロジェクト(実行可能ファイルまたはライブラリごとに1つ)を配置することです。プロジェクトを実行する場合は、Solution Explorer
でプロジェクトを右クリックし、Set as Startup Project
を選択してから、Start
ボタンをクリックして実行します。
ソリューションにプロジェクトを追加するには、ソリューションを右クリックしてAdd
|を選択します。 New project...
またはAdd
| Existing project
。
Visual Studioの場合:
「ソリューション」を1つ作成-ソリューションの下に複数の「プロジェクト」を作成できます。各プロジェクトは、実行可能ファイルに個別にコンパイルされます。コンパイルは、不要なプロジェクトの「アンロード」以外は通常どおり行われます。他のプロジェクトの1つを再度開くには、ソリューションエクスプローラーから[プロジェクトの再読み込み]を選択します。
この機能は、ソースファイルを共通の「フォルダー」にグループ化して、個別にコンパイル/デバッグしながら検索とアクセスを容易にする研究/組織の目的で役立ちます。私が言えることの主な利点は、ソリューションエクスプローラーを使用してプロジェクトを簡単にナビゲートできることです。
最も簡単な解決策は、複数のビルド構成を使用することです。いくつかのビルド構成を作成して、それぞれのエントリポイントを定義します。
ビルドする必要があるファイルが1つだけの場合は、[プロパティ]の[ビルドからファイルを除外]オプションを使用して、残りを除外できます。複数のソースファイルを選択し、それらを一度に除外します。明らかに、この解決策は、ファイル間で関数/シンボルにアクセスしている場合は機能しません。
Visual Studioでは、作成する実行可能ファイルごとに1つのプロジェクトを作成する必要があります。
はい、これを行う簡単な方法があります:main関数を含み、ソリューションエクスプローラーウィンドウで実行したくないこれらのソースファイルを右クリックして、プロパティ->構成->一般->ビルドから除外に移動します。 、はいを選択します。したがって、プロジェクトをビルドして実行しても、これらのソースファイルはコンパイルおよび実行されません。別のソースファイルを実行したい場合は、それをインクルードし、他のソースファイルを除外します。