2016-11-22 14 views
0

プラットフォームの3番目のオプションをサポートするためにアプリが必要な状況があります。VisualStudio-カスタムプラットフォーム

X86 & X64はすでに使用されていますので、私は新しいカスタムプラットフォームを追加することをお勧めします。そのプラットフォームを選択すると、それに応じてdllファイルが変更されます。

私の目標は、プロジェクトファイルにそのような何かを新しい条件を追加することです:

<Reference Include="newCustomPlatform" Condition="'$(Platform)'=='newCustomPlatform'"> 
     <HintPath>..\..\_libBinary\87\newCustomPlatform.dll</HintPath> 
    </Reference> 

私はそのための答えを探したが、私は唯一のx86またはx64関連の答えを見つけました。

できますか?

答えて

1

Visual Studioは任意のカスタムプラットフォームをサポートしていません。サポートされているターゲットプラットフォームの定義済みセットのみをサポートします。一般的な一般的な使用方法は、x86(IA-32)とx86-64(AMD64)です。必要なビルドツールがインストールされている場合は、ItaniumまたはARMのサポートを受けることもできます。歴史的なバージョンはAlphaとPowerPC、そしておそらく私が忘れている他のいくつかのアーキテクチャをサポートしています。

これは、もちろんあなたの役に立つものではありません。最終的に32ビットのx86または64ビットx86バイナリを作成したい場合、絶対にこれら2つのプラットフォームのいずれかを使用する必要があります。

代わりに新しい設定を作成することをお勧めします。デフォルトでは、ターゲットプラットフォームごとに「デバッグ」と「リリース」が表示されますが、必要な数だけ設定を行うことができます。私が行うことは、必要なカスタム属性を持つ "デバッグ(カスタム)"と "リリース(カスタム)"(または任意の名前)を作成することです。

あなたの例に多すぎることを読んでいるかもしれませんが、87は、SSEまたは新しい命令セットを使用せずにx87命令セットに制限するプラットフォームを作成しようとしていますか?その場合は、/archコンパイラスイッチで設定できます。 /arch:IA32はあなたをx87命令セットに制限します。 /arch:SSE2がデフォルトです。他のオプションには、/arch:SSE,/arch:AVX、および/arch:AVX2が含まれます。これらのオプションは、あらかじめ定義されたマクロの定義に影響します。 AVXがサポートされている場合、__AVX__が定義されます。 AVX2がサポートされている場合、__AVX2__が定義されます。そうでない場合は、_M_IX86_FPシンボルの値を確認する必要があります。の場合は0/arch:SSEの場合は1/arch:SSE2の場合は2となります。これらのシンボルの値をテストし、条件付きで必要なライブラリにリンカーを向けることができます。次のようなものです:

#if (defined _M_IX86) 
    #if (defined __AVX2__) 
     #pragma comment(lib, "bin\avx2\MyData.lib") 
    #elif (defined __AVX__) 
     #pragma comment(lib, "bin\avx\MyData.lib") 
    #elif (_M_IX86_FP == 2) 
     #pragma comment(lib, "bin\sse2\MyData.lib") 
    #elif (_M_IX86_FP == 1) 
     #pragma comment(lib, "bin\sse\MyData.lib") 
    #else 
     #pragma comment(lib, "bin\87\MyData.lib") 
#endif 
+0

ありがとうございます - 87はx87ではなく、私の製品のバージョンです。私がやったことは、そのようなものです[リンク](http://stackoverflow.com/questions/533554/how-to-use-different-files-in-a-project-for-different-build-configurations- vis)。私がmsビルドプロセスで条件付けできる新しい「名前」を追加したようなものです。 –

関連する問題