2016-04-27 8 views
0

Я компилирую код C++ с msbuild и указываю cl опции внутри ClCompile item. Что-то вроде ...Параметры Msbuild и ClCompile

<ItemGroup> 
    <ClCompile Include="something.cpp"> 
     <FloatingPointModel>Precise</FloatingPointModel> 
     <WarningLevel>Level2</WarningLevel> 
    </ClCompile> 
</ItemGroup> 

<Import Project="$(VCTargetsPath)\Microsoft.Cpp.default.props" /> 
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> 
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Targets" /> 

Вышеприведенный пример. Теперь я хочу напечатать все параметры, используемые для вызова cl. Вопрос в следующем: как мне это сделать? Моя первая попытка была использовать что-то вроде следующего:

<Target Name="WriteToFile" AfterTargets="ClCompile" > 
    <WriteLinesToFile File="$(OutDir)\log.txt" Lines="@(ClCompile)" Overwrite="true" /> 
</Target> 

К сожалению, это регистрирует только имя файла (something.cpp), а не варианты.

Обратите внимание, что я знаю, что опции компилятора хранятся Tracker.exe в CL.command.*.tlog файле, но сначала, я не хочу полагаться на то, как это может изменяться и второй, я, скорее всего, нужно сделать некоторые трансформации позже. Я также знаю, что могу получить доступ к отдельным параметрам (например, %(ClCompile.FloatingPointModel)), но я не хочу обрабатывать каждый вариант отдельно.

Есть ли лучший способ сделать это?

ответ

1

Нет никаких простых решений для этого. Вы можете найти отправную точку here и еще один пример here