As in the title, what is the question of what is the difference between (assemblies in place / out of place)?
The built-in assembly generates various compiled files ( .o / .obj files, executable files, etc.) in the same directory as the source tree.
.o
.obj
A custom assembly generates them in a directory that is not a source directory. This means that you can have several non-standard assemblies that all reference the same source tree, which is not possible if you have a built-in assembly.
See also: CMake Frequently Asked Questions .