2016-04-27 2 views
0

Je compile le code C++ avec msbuild et je spécifie les options cl à l'intérieur de l'élément ClCompile. Quelque chose comme ...Options Msbuild et 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" /> 

Ce qui précède est juste un exemple. Maintenant, je veux imprimer toutes les options utilisées pour l'invocation cl. La question est: comment je fais ça? Ma première tentative a été d'utiliser quelque chose comme ce qui suit:

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

Malheureusement, ce ne consigne nom de fichier (something.cpp) et non les options.

Notez que je suis conscient du fait que les options du compilateur sont stockées par Tracker.exe dans le fichier CL.command.*.tlog, mais d'abord, je ne veux pas compter sur ce qu'il est sujet à changement et, deuxièmement, je vais devoir le plus susceptible de faire des transformations plus tard. Je sais aussi que je pourrais accéder à des options individuelles (comme %(ClCompile.FloatingPointModel)), mais je ne veux pas gérer chaque option séparément non plus.

Y a-t-il une meilleure façon de procéder?

Répondre

1

Il n'y a pas de solutions triviales pour le faire. Vous pouvez trouver un point de départ here et un autre exemple here