+1  A: 

Utility? not that I know of but you could knock one up in perl fairly easily.

This works quick and dirty for me.

#!/usr/bin/env perl

my $inputfile = $ARGV[0];
my $outputfile = $ARGV[1];

open(IN,"<$inputfile") or die ("$! $inputfile");
open(OUT,">$outputfile") or die ("$! $outputfile");

while (my $line = <IN> ){
        if ( $line =~/(<!--#include virtual="([\/a-zA-Z0-9_\-\.]+)"-->)/ ){
                my $all = $1;
                my $file = $2;

                my $sep = "\\";
                if ( $^O =~/linux|bsd/ ){
                        $sep = "/";
                }
                my @path = split("/",$file);
                $file = join($sep,@path);

                open(GET,"<.$file") or die "$! $file";
                my $content = "";
                while( my $cline = <GET> ){
                        $content .= $cline;
                }
                close(GET);
                $line =~ s/$all/$content/;
        }
        print OUT $line;
}

close(OUT);
close(IN);
IanNorton
Well of course, but I was hoping to avoid reinventing the wheel. :)
josh3736
sorry, i was about to upload one I made for you but had a power cut :) answer edited
IanNorton
Thanks for the code! I'll file this away for future use. I ultimately decided to roll my own much more involved build process (see the book I ended up writing below).
josh3736
A: 
josh3736