What Build Tool Should You Be Using and When?


For starters, there's nothing wrong with a Make or ANT process. In fact, if you don't want to have anything to do with Microsoft tools or platforms, I would recommend using either of these tools.

If you are using Microsoft tools and platforms and want to stay in line with the future tools to be released by Microsoft, here is what's recommended:

  • If you build mostly C++ projects, use VCBuild unless you have project-to-project dependencies on non-C++ projects. VCBuild can use multiple processors when building solutions.

  • If you build mostly non-C++ projects (but all project types that build using MSBuild), or if you have project-to-project references between C++ and non-C++ projects, use MSBuild. You won't get multiple processor build support, unfortunately.

When Should You Use MSBuild?

  • Whenever you are building a C#, VB, or J# project.

  • Whenever you are orchestrating a heterogeneous build (known as build lab scenarios). Note: MSBuild will cooperate/interoperate with VCBuild for the C++ parts of the build.

  • If you build mostly non-C++ projects (but all project types that build using MSBuild), or if you have project-to-project references between C++ and non-C++ projects.

When Should You Use VCBuild?

  • Whenever you are building a C++ project (managed or unmanaged [a.k.a. native code]).

  • Whenever you are building a mixed-language solution that requires multi-proc. Note: VCBuild will cooperate/interoperate with MSBuild for the C#, VB, or J# parts of the build.

  • If you build mostly C++ projects, use VCBuild unless you have project-to-project dependencies on non-C++ projects. VCBuild can use multiple processors when building solutions.

When Should You Use devenv /build?

  • Whenever you are building a non-Microsoft project or deployment project or if you have non-MSBuild, non-C++ project types, you'll have to use devenv /build.

It is recommended that you completely de-couple and isolate C++ code and build processes from C#/VB code and build process as much as possible. The C++ model is not completely compatible with the .NET model. (Header files and object files just don't map to assemblies and vice versa, and single-step building versus compile and link are two different worlds.)



The Build Master(c) Microsoft's Software Configuration Management Best Practices
The Build Master: Microsofts Software Configuration Management Best Practices
ISBN: 0321332059
EAN: 2147483647
Year: 2006
Pages: 186

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net