[CONNECT Update 16 C++] MultiCppCompileGo.mki

The example steel supplied with the SDK uses an unusual bmake file.  Unusual because it %includes a pair of supplementary make files MultiCppCompileGo.mki and MultiCppCompileRule.mki.  It's found in only four or five other C++ examples (I don't think it's applicable to .NET).  Here's a note found in MultiCppCompileGo...

The two files MultiCppCompileRule.mki and MultiCppCompileGo.mki should be used together in a single bmake context to bracket the dependency blocks of C/C++ compilands that are completely uniform.

What does uniform mean in this context?

The advantage of using those macros is that it invokes the Viz C++ compiler only once, to build all source files in a list.  For small examples that probably doesn't have much effect, but for larger projects it should result in faster compilation times because the compiler is invoked only once instead of a discrete invocation per source file.

  • Here's a note found in MultiCppCompileGo...

    This note came from MultiCppCompileRule.mki, not MultiCppCompileGo.mki.

    What does uniform mean in this context?

    I think it means the ${MultiCompileDepends} part. The dependency in every line between MultiCppCompileRule.mki and MultiCppCompileGo.mki.should include a  ${MultiCompileDepends}. Below is my make file which uses the VS multiple processor compilation technology.

    MultiCompileDepends = $(_MakeFileSpec)
    %include $(MDLMKI)MultiCppCompileRule.mki
    
    $(o)$(appName)$(oext) : $(baseDir)$(appName).cpp ${MultiCompileDepends}
    
    $(o)SolidTest$(oext)  : $(baseDir)SolidTest.cpp ${MultiCompileDepends}
    
    $(o)MeshTest$(oext)     : $(baseDir)MeshTest.cpp ${MultiCompileDepends}
    
    $(o)TerrainModelTest$(oext) : $(baseDir)TerrainModelTest.cpp ${MultiCompileDepends}
    
    $(o)LevelTest$(oext)    : $(baseDir)LevelTest.cpp ${MultiCompileDepends}
    
    $(o)ViewTest$(oext)    : $(baseDir)ViewTest.cpp ${MultiCompileDepends}
    
    $(o)ECTest$(oext)     : $(baseDir)ECTest.cpp  ${MultiCompileDepends}
    
    $(o)PCTest$(oext)     : $(baseDir)PCTest.cpp  ${MultiCompileDepends}
    
    $(o)TextTest$(oext)     : $(baseDir)TextTest.cpp  ${MultiCompileDepends}
    
    $(o)Create$(oext)    : $(baseDir)Create.cpp  ${MultiCompileDepends}
    
    $(o)NewTech$(oext)    : $(baseDir)NewTech.cpp  ${MultiCompileDepends}
    
    $(o)PrintTest$(oext)    : $(baseDir)PrintTest.cpp  ${MultiCompileDepends}
    
    $(o)ConstraintTest$(oext)    : $(baseDir)ConstraintTest.cpp  ${MultiCompileDepends}
    
    $(o)MaterialTest$(oext)    : $(baseDir)MaterialTest.cpp  ${MultiCompileDepends}
    
    $(o)GCSTest$(oext)         : $(baseDir)GCSTest.cpp  ${MultiCompileDepends}
    
    $(o)MdlDialogTest$(oext)    : $(baseDir)MdlDialogTest.cpp $(baseDir)$(appName).h  ${MultiCompileDepends}
    
    $(o)MyDgnTools$(oext)    : $(baseDir)MyDgnTools.cpp   $(baseDir)MyDgnTools.h  ${MultiCompileDepends}
    
    %include $(MDLMKI)MultiCppCompileGo.mki



    Answer Verified By: Jon Summers