If you have multiple translation units then use /MP argument to cl.exe:
| cl.exe /MP ...(other args)... file1.cpp file2.cpp fileN.cpp
|
This will make cl.exe to compile each file in separate process. This is available since VS2005.
If you have only one translation unit use /cgthreads argument. It will use 4 threads for code generation and optimizations. You can use number 1 to 8 to specify exactly how many threads to use. This is available since VS2013.
You can use both switches together.