2012-04-09 4 views
0

Windows用のC++ライブラリソースに基づくLinux/Windows用のC++ライブラリ、Windows用のC++/CLIライブラリに基づくC#プロジェクト、Linux/Windows用のC++ライブラリに基づくC++プロジェクトこの種のプロジェクトを構築するにはどうすればいいですか?私が選ぶ必要のあるシステムを構築するには?ビルド "ネイティブコード+ラッパー+マネージコード"プロジェクト

私は、Linuxでmakefileを生成するCMakeとWindowsでMSVSを生成するCMakeを使用しますが、CMakeLists.txtをビルドC#プロジェクトに書くのは非常に難しいです。

私は2つのMSVSソリューションを持っていました:管理対象(cmakeによって構成されています)とネイティブ(cmakeによって生成された)コードプロジェクト用です。管理されたプロジェクトはMSVSで書かれました。ネイティブプロジェクトはCMakeLists.txtで記述されていました。 CMakeは、外部ライブラリ、出力ディレクトリなどへのパスを保持していたWindows環境変数を使用して、管理されたプロジェクトを構成していました。

+0

あなたはVSのすべてを持っている必要があります。あなたが探していた "VS"以上のものがありますか? – mydogisbox

+0

WindowsでビルドするためのオリジナルのMSVSプロジェクトと、LinuxでビルドするためのCMakeListsが必要なのですか?しかし、この場合、ネイティブライブラリにソースファイルを追加したい場合は、MSVSプロジェクトとCMakeListsを変更する必要があります。 – dizel3d

+0

下記の私の答えを参照してください。 – mydogisbox

答えて

0

私は現在、C++、CLI、およびC#を持つプロジェクトで作業しており、C++はiOSアプリケーションでも使用されています。 Windows上でセットアップする方法は、各言語を独自のプロジェクトに入れてから、すべてのプロジェクトを1つのソリューションにまとめて、IDEを使用してすべてを1ステップでコンパイルできます。すべての依存関係などはVSによって管理されます。私はVSのセットアップがすべての依存関係を持つことの単純さとはるかにC++ファイルのためのプロジェクトを作る余分な仕事を上回ると思う。 iOSの場合は、iOS用のC++のものをすべてビルドする別のXcodeプロジェクトがあります。同様に、Windows用のCMakeプロジェクトもあります。

+0

Vusial Studioプロジェクトの設定方法は?私はあなたが外部ライブラリへのパスをどのように設定するのか、出力ディレクトリをどういう意味ですか? – dizel3d

+0

C++の場合?VC++ Directoriesの下のC++プロジェクトプロパティページでは、ライブラリディレクトリを設定できます。 – mydogisbox

+0

ソリューション外のアプリケーションのライブラリディレクトリを設定するだけで済みます。内部のコンパイルされたライブラリは、デフォルトのパスの一部である場所に置かれます。 CLIプロジェクトへのC#参照の場合は、目的のプロジェクトをその参照に追加するだけです。 – mydogisbox

0

MSBuildは、Visual Studioプロジェクトファイル(本質的にMSBuildスクリプト)とうまく統合されたまともなビルドスクリプトツールです。以前はこれまで使ったことがない人なら、おそらく学習曲線がありますが、それを使って.NETプロジェクトを構築するのは簡単です。 MSBuildのスクリプトを使用してVisual Studioプロジェクトを構築する

例:

<!-- Compile a C# project and output to a staging directory --> 
<MSBuild Projects="MyCsProject\MyCsProject.csproj" Properties="outDir=Staging\bin\MyCsProject" /> 

<!-- Compile a C++/CLI project and output to a staging directory, then re-sign it --> 
<MSBuild Projects="MyCppProject\MyCppProject.vcxproj" Properties="outDir=Staging\bin\MyCppProject" /> 
<Exec Command="&quot;$(WindowsSDKDirectory)\Bin\sn.exe&quot; -Rc Staging\bin\MyCppProject\MyCppProject.dll $(StrongNameKeyContainer)" /> 

あなたは、Visual Studio Professionalを使用して以上いる場合は、あなたがあなたのC#プロジェクトとあなたのCの両方が含まれているソリューションファイルを持つことができ++/CLIプロジェクトのため、Visual Studio内のすべてを構築するのはかなり簡単です。

しかし、Visual StudioのExpressエディションを使用している場合は、MSBuild(または別のビルドスクリプトツール)を使用することをお勧めします。これは、C++/CLIプロジェクトをExpressエディションを使用するC#プロジェクトであるため、さまざまなプロジェクトをすべて1ステップでコンパイルできるMSBuildスクリプトが必要になります。

私がC++/CLIプロジェクトに取り組んだことの1つは署名です。 C++/CLIアセンブリに署名する必要がある場合は、MSBuildスクリプトにWindows SDKの一部である "sn"ツールを使用してC++/CLIアセンブリに再署名するステップを追加する必要がありますそれはコンパイルされています。 .snk.pfxファイルを使用している場合は、まず「sn」ツールを使用してキーコンテナ(-iスイッチを使用)にそのキーを追加してから、そのキーコンテナを使用する必要があります(-Rcスイッチを使用して)アセンブリに再署名したとき。

+0

MSBuildはLinuxでは動作しませんが、ネイティブのC++ライブラリをLinuxとWindowsで構築する必要があります。 – dizel3d