CMake ExternalProject works for many types of sub-projects across CMake generators. An implementation detail of Ninja is by default ExternalProject doesn’t print progress until each ExternalProject step is finished. For large external projects that take several minutes to download and build, users could be confused thinking CMake has frozen up. To make ExternalProject show live progress as it does with Makefiles generators, add the USES_TERMINAL_* true arguments to ExternalProject_Add.
ExternalProject_Add( BigProject ... USES_TERMINAL_DOWNLOAD true USES_TERMINAL_UPDATE true USES_TERMINAL_PATCH true USES_TERMINAL_CONFIGURE true USES_TERMINAL_BUILD true USES_TERMINAL_INSTALL true USES_TERMINAL_TEST true )
“USES_TERMINAL* true” forces ExternalProject steps to run sequentially. For large projects this is ordinarily not significant.