визуальная командная строка MSBuild — может передать определения?

Есть ли способ конвертировать что-то вроде этого:

#define ERROR_LOG_LEVEL 5

Во что-то, что msbuild через командную строку перейдет к его проектам?

msbuild.exe {???}ERROR_LOG_LEVEL=5 target

Я прочитал ответы на похожие вопросы, и похоже, что ответ нет, просто хочу перепроверить в случае, если какой-то гений нашел обходной путь.

3

Решение

Макросы могут быть определены путем передачи /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
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]