I have a big solution with more than 40 projects. Almost half of them are test projects. In my project we use both Code Contracts, Code Analysis, Style Analysis. I want to
This is now built in for Visual Studio 11 for all languages, not just C++. "Visual Studio 2010 included an option for "maximum number of parallel project builds." Although there was no indication of any restriction, this IDE option only worked for C++ projects. Fortunately, this restriction no longer applies to Visual Studio 11" from www.visualstudiomagazine.com
I know that there is a clone of nmake that supports the -j switch to compile in parallel:
http://qt.gitorious.org/qt-labs/jom
and there is also a hack for MSbuild, just google it. I also know there is a tool that supports building on multiple machines and perhaps also on multiple cores, but I dont remember its name at the moment.
hope this helps.
Then real answer you are looking for is to add the /MP compiler flag to the CXX compiler flags.
In Visual Studio Under the project property page> C\C++ >General Multi-processor compilation just type Yes (/MP). Now it will build all 40 projects in parallel on each of the cores
You could launch the build in MSBuild
in parallel by :
Setting the attribute BuildInParallel
of MSBuild
task to true
<Target Name="RunInParallel">
<MSBuild BuildInParallel="true"
Projects="@(Projects)"
Targets="RunCodeAnalysis">
</MSBuild>
</Target>
Or calling msbuild with the parameter /maxcpucount:X
where X
specifies the number of worker processes that are involved in the build. This solution better suits your need.
msbuild [YourSolutionFile.sln] /maxcpucount:4 /p:Platform=AnyCpu;Configuration=Debug;
Scott Hanselman wrote a post on that, if you want to integrate (kinda) the process into Visual studio as an external tool.
For C++ projects you could configure multiprocessor build directly in Visual Studio :
Tools | Options | Projects and Solutions | Build and Run
In Visual Studio: Tools | Options | Projects and Solutions | Build and Run. This should default to your CPU count.
From the command line: msbuild /maxcpucount[:n]
(is n is not specified, then it will use the CPU count).