Extract data from vcxproj files

List of source files

#!/bin/sh
xmlstarlet sel -t -c 'Project/ItemGroup/ClCompile' -i "contains(Include,'.cpp')" -o "ClCompile" -n  libVinoDriverUnitTests.vcxproj

Preprocess-only

  • Trying to get an MSVC project to produce pre-processed files as *output* of the build process.
  • Specifically for integrating c-msggen.

VCProj

<Configuration
            Name="Debug|Win32"
            OutputDirectory="$(SolutionDir)$(ConfigurationName)"
            IntermediateDirectory="$(ConfigurationName)"
            ConfigurationType="4"
            CharacterSet="1"
            WholeProgramOptimization="1"
            ExcludeBuckets="3;5;6;8;9;10;11;13;15;16;18;21"
            >
            <Tool
                Name="VCPreBuildEventTool"
            />
            <Tool
                Name="VCCustomBuildTool"
            />
            <Tool
                Name="VCXMLDataGeneratorTool"
            />
            <Tool
                Name="VCWebServiceProxyGeneratorTool"
            />
            <Tool
                Name="VCMIDLTool"
            />
            <Tool
                Name="VCCLCompilerTool"
                Optimization="0"
                AdditionalIncludeDirectories="../../../ThirdPartyTools;../../../Common"
                PreprocessorDefinitions="_DEBUG;_LIB;KINEMATICS_PROTOTYPE"
                RuntimeLibrary="1"
                EnableFunctionLevelLinking="true"
                UsePrecompiledHeader="0"
                PrecompiledHeaderThrough=""
                PrecompiledHeaderFile="$(IntDir)\$(TargetName).pch"
                WarningLevel="3"
                DebugInformationFormat="3"
                CompileAs="2"
            />
            <Tool
                Name="VCManagedResourceCompilerTool"
            />
            <Tool
                Name="VCResourceCompilerTool"
            />
            <Tool
                Name="VCPreLinkEventTool"
            />
            <Tool
                Name="VCLibrarianTool"
            />
            <Tool
                Name="VCALinkTool"
            />
            <Tool
                Name="VCXDCMakeTool"
            />
            <Tool
                Name="VCBscMakeTool"
            />
            <Tool
                Name="VCFxCopTool"
            />
            <Tool
                Name="VCPostBuildEventTool"
            />
        </Configuration>
  • Possibly WholeProgramOptimization, ExcludeBuckets or EnableFunctionLevelLinking have something to do with the fix.