A custom MSBuild task for code generators with discovered dependencies (e.g. .d files). The task properties
match CustomBuild with the addition of a new DependencyFile property. The dependency file format
is Makefile syntax like what gcc produces with gcc -MD -MF $out.d.
Load the task from the DLL:
<UsingTask TaskName="CodeGen" AssemblyFile="{dll path}" />
Create an ItemGroup for your custom file type:
<ItemGroup>
<MyFile Include="{input path}">
<Command>{command to execute}</Command>
<Outputs>{output path}</Outputs>
<AdditionalInputs>{tool path}</AdditionalInputs>
<DependencyFile>{dependency path}</DependencyFile>
</MyFile>
<MyFile>
...
</MyFile>
</ItemGroup>
Create targets that invoke the task:
<Target Name="CodeGenMyFile" BeforeTargets="ClCompile">
<CodeGen Inputs="@(MyFile)" TargetName="CodeGenMyFile" TLogLocation="$(TLogLocation)" Clean="false" />
</Target>
<Target Name="CleanMyFile" AfterTargets="Clean">
<CodeGen Inputs="@(MyFile)" TargetName="CodeGenMyFile" TLogLocation="$(TLogLocation)" Clean="true" />
</Target>
The TargetName property must match the name of the Target so that the generated .tlog files will
be recognized by Visual Studio.
The command must create a dependency file listing the input path and its dependencies using Makefile syntax:
{input path}: {dependency path1} {dependency path2} ...