We have been using cook for a few years in a c++ project. One thing that has always been a problem is that when we made certain changes to header (.h) files, not all of the needed source files would be recompiled. This was particularly noticeable with header files which include code, necessary because of something to do with the use of templates. <br>
<br>We have been using the "Small Method" for include file dependencies from the Users Guide. I have been trying to implement the "Large Method" instead, where dependency files (.cpp.d) are created and included in the build process. I find that this method increased our cook time by quite a bit, even when the .d files are not re-generated. It is also re-generating <b>all</b> the .d files any time I make a change to one .h file. <br>
<br>Please look at my cook code and let me know if I have made any mistakes. Thanks for any help,<br><br>-Ryan Thompson <br><br><br><span style="font-family: courier new,monospace;">DEPENDENCY_FILES = [fromto %.cpp [SRCDIR]%.cpp.d [CPP_FILES]];</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">#include-cooked [DEPENDENCY_FILES]</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">[SRCDIR]%.cpp.d:</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">[match_mask [SRCDIR]%.cpp [MANIFEST][RD_MANIFEST]]</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">{</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">    c_incl --no-cache [SRCDIR]%.cpp</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">    "--prefix='"[OBJDIR]"%.o " [target] ": " [match_mask [SRCDIR]%.cpp [MANIFEST][RD_MANIFEST]] "' "</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">    "--suffix='set nodefault;'"</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">    -I [INCDIR]</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">    -o [target];</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">}</span><br style="font-family: courier new,monospace;">
<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">/* DEFAULT */</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">[OBJDIR]%.o:</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">[match_mask [SRCDIR]%.cpp [MANIFEST]]</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">{</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">    CPPFILE = [match_mask [SRCDIR]%.cpp [MANIFEST]];</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">    [CC] -o [target] -c [CPPFILE] [FLAGS] [OPT2FLAG] [INCLUDES] ;</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">}</span><br style="font-family: courier new,monospace;"><br><br>