Visual Studio не поддерживает произвольные пользовательские платформы. Он поддерживает только определенный набор поддерживаемых целевых платформ. В общем случае это x86 (IA-32) и x86-64 (AMD64). Если у вас есть необходимые инструменты сборки, вы также можете получить поддержку Itanium или ARM. Исторические версии поддерживали Alpha и PowerPC и, возможно, несколько других архитектур, которые я забываю.
Ничто из этого не поможет, конечно. Если вы в конечном итоге хотите создать 32-битный x86 или 64-битный двоичный код x86, вы абсолютно должны использовать одну из этих двух платформ.
Вместо этого вы должны создать новые конфигурации. По умолчанию вы получаете «Debug» и «Release» для каждой целевой платформы, но вы можете иметь столько или несколько конфигураций, сколько хотите. То, что я делаю, это создать «Debug (Custom)» и «Release (Custom)» (или любое ваше имя) с необходимыми настраиваемыми атрибутами.
Помимо этого, может быть, я слишком много читаю в вашем примере, но 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, это просто версия моего продукта. то, что я закончил делать, это что-то вроде этого [ссылка] (http://stackoverflow.com/questions/533554/how-to-use-different-files-in-a-project-for-different-build-configurations- VIS). например, я добавил новое «имя», которое я могу установить в процессе сборки ms. –