VisualStudio-自定义平台
我有一种情况,我需要我的应用程序来支持平台的第3个选项。VisualStudio-自定义平台
X86 X64 &已经被使用,所以我寻找后添加一个新的自定义平台,当我选择与平台的dll文件将发生相应的变化。
我的目标是一个新的条件添加到项目文件中,这样的事情:
<Reference Include="newCustomPlatform" Condition="'$(Platform)'=='newCustomPlatform'">
<HintPath>..\..\_libBinary\87\newCustomPlatform.dll</HintPath>
</Reference>
我找了一个答案,但我只找到x86或x64相关的答案。
可以这样做吗?
Visual Studio不支持任意的自定义平台。它只支持一组定义的支持目标平台。一般常用,这些是x86(IA-32)和x86-64(AMD64)。如果您安装了必要的构建工具,则可能还会获得Itanium或ARM支持。历史版本支持Alpha和PowerPC,也许还有一些我忘记的架构。
当然,这些都不会对您有所帮助。如果您最终希望生成32位x86或64位x86二进制文件,则必须使用这两种平台之一。
你想要做的是创建新的配置。默认情况下,您可以为每个目标平台获得“调试”和“发布”,但您可以拥有尽可能多或更少的配置。我所做的是使用必要的自定义属性创建“调试(自定义)”和“发布(自定义)”(或任何您想要的名称)。
除此之外,也许我读了太多你的例子,但87
建议你试图创建一个平台,限制自己的x87指令集,而不使用SSE或更新的指令集?如果是这样,那么可以使用/arch
编译器开关进行配置。 /arch:IA32
将您限制在x87指令集; /arch:SSE2
是默认值,并且只是表示它。其他选项包括/arch:SSE
,/arch:AVX
和/arch:AVX2
。这些选项影响一些预定义的宏的定义。如果支持AVX,则将定义__AVX__
。如果支持AVX2,则会定义__AVX2__
。否则,你需要检查_M_IX86_FP
符号的价值:这将是0
如果使用/arch:IA32
,1
如果使用/arch:SSE
,或2
为/arch:SSE2
及更高版本。您可以测试这些符号的值并有条件地将链接器指向必要的库;例如:
#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
谢谢-87不是x87,它只是我的产品的版本。我最终做的事情就是这样[link](http://stackoverflow.com/questions/533554/how-to-use-different-files-in-a-project-for-different-build-configurations- VIS)。就像我添加了一个新的“名称”,我可以在ms-build过程中进行调整。 –