Why when compiling C++ code uses a maximum of 30% of the CPU?

Why when compiling C++ code uses a maximum of 30% of the CPU?
In Incredibuild writes that use 1 core of the 4 available.
i5 2300

Multithereding in compilation means running multiple compilers at once and each compiles different cpp file, linking most likely will use single core. UBT shows in output log maximum nuber of compilers (thread) it gonna run, but you need enough cpp files to compile to fill them in.

If your project has unity enabled (cpp batching) then it will compile only one cpp file which effectivly will use only single core, you can disable unity in module by setting bFasterWithoutUnity to true in module build script (*.build.cs), if you have a lot of cpp files then unity feature will create few cpp files and it will use more cores in process and will be faster.

Note that at the end OS is the one that decides which process and process thread use which core and CPU thread, process can suggest which to use but i don’t think compiler does that