В C++ есть предопределенные макросы:Как использовать #if, чтобы решить, какую платформу компилируются для в C#
#if defined(_M_X64) || defined(__amd64__)
// Building for 64bit target
const unsigned long MaxGulpSize = 1048576 * 128;// megabyte = 1048576;
const unsigned long MaxRecsCopy = 1048576 * 16;
#else
const unsigned long MaxGulpSize = 1048576 * 8;// megabyte = 1048576;
const unsigned long MaxRecsCopy = 1048576;
#endif
Который позволяет мне установить константы контролировать объем памяти, который будет использоваться.
Конечно, я могу определить переменную препроцессора буквально следующее:
#define Is64bit 1
using System;
using System.Collections.Generic;
-later-
#if Is64bit
// Building for 64bit target
const long MaxGulpSize = 1048576 * 128;// megabyte = 1048576;
const long MaxRecsCopy = 1048576 * 16;
#else
const long MaxGulpSize = 1048576 * 8;// megabyte = 1048576;
const long MaxRecsCopy = 1048576;
#endif
Я не могу найти способ, чтобы обнаружить платформу на основе значений, установленных в менеджере конфигурации, который позволит построить здание командной строки:
set de=C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe
set sol=E:\Some\Path\to\my.sln
"%de%" %sol% /build "Release|x86"
"%de%" %sol% /build "Release|x64"
Есть ли способ обнаружить th есть или мне придется строить, менять платформу и строить снова?
Считаете ли вы использование условных символов компиляции? Они могут быть установлены в вашем проекте в зависимости от целевой платформы. –
Спасибо @QualityCatalyst, они будут автоматическими или мне нужно их установить? Есть ли список условных символов? –
Вам нужно будет установить их в конфиге. Конфигурация довольно открыта и не заботится о том, что вы определяете. – maxwellb