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過程中進行調整。 –