CMake utiliza la marca recursiva porque tiene que hacerlo. CMake es una herramienta general y tiene que generar información dependiente sobre la marcha. Para ser compatible con make (no solo gmake), debe usar make recursivo para poder hacer eso. CMake también admite múltiples niveles de generadores de código. Uno podría escribir potencialmente un generador de tup para CMake. Se está trabajando para CMake y ninja. Sin embargo, con el generador de creación simple no hay forma de hacer lo que CMake hace sin algún nivel de marca recursiva.
"No creo que CMake" tuviera que "usar recursivo" Si puede crear un archivo MAKE que no es recursivo y funciona con más de gmake, y puede calcular información dependiente sobre la marcha, entonces lo probaría incorrecto. Pasamos bastante tiempo intentando que no sea recursivo. Es "menos" recursivo que solía ser.
Brad King ha creado una entrada en Preguntas que describe la manera maquillaje se utiliza en CMake:
El umbral de construcción vacía es "imperceptible", por lo menos de un segundo es probablemente correcto. Hay buenas herramientas de compilación que pueden lograr eso para un gran proyecto razonable. Incluso los makefiles no recursivos simples pueden hacerlo. 5 segundos para una compilación vacía es una locura, no entiendo por qué en la tierra 'cmake' decidió emitir makefiles recursivos en primer lugar (tiene sentido para proyectos pequeños, pero de nuevo, para proyectos pequeños no lo haces necesita 'cmake'. Ver' tup' donde build vacía para una distribución completa de Linux es menor que '.5' segundos. –