Есть ли способ конвертировать что-то вроде этого:
#define ERROR_LOG_LEVEL 5
Во что-то, что msbuild через командную строку перейдет к его проектам?
msbuild.exe {???}ERROR_LOG_LEVEL=5 target
Я прочитал ответы на похожие вопросы, и похоже, что ответ нет, просто хочу перепроверить в случае, если какой-то гений нашел обходной путь.
Макросы могут быть определены путем передачи /D
вариант компилятору. Вы можете указать /D
вариант из MSBuild с помощью AdditionalOptions
из ClCompile
:
<ItemDefinitionGroup>
<ClCompile>
<AdditionalOptions>/DERROR_LOG_LEVEL=5 %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
</ItemDefinitionGroup>
Если вы хотите иметь возможность передать значение для макроса через вызов msbuild.exe, вы можете легко это сделать:
<ItemDefinitionGroup Condition="'$(ErrorLogLevel)' != ''">
<ClCompile>
<AdditionalOptions>/DERROR_LOG_LEVEL=$(ErrorLogLevel) %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
</ItemDefinitionGroup>
с msbuild.exe вызывается как:
msbuild /p:ErrorLogLevel=5 MyProject.vcxproj
Других решений пока нет …