Ответ 1
Cmake - это "генератор проекта". Он фактически не создает никаких объектных файлов и т.д.; то, что он делает, генерирует управляющие файлы для других инструментов (таких как GNU make), которые будут создавать объектные файлы и т.д.
Преимущество использования cmake вместо написания файла makefile напрямую состоит в том, что, используя тот же самый входной файл cmake, cmake может генерировать файлы проекта для всех видов различных инструментов управления сборками: помимо make файлов он может генерировать Xcode (Mac OS X ) файлы проектов, файлы проектов Microsoft Visual Studio и файлы управления для других инструментов, таких как Ninja. Если вы пишете программное обеспечение, которое должно быть построено на множестве разных платформ, тогда cmake часто является хорошим выбором.
В вашей ситуации это выглядит так: cmake генерирует набор make файлов (только). Обычно вы делаете это только один раз, когда у вас есть чистое рабочее пространство. Затем вы запускаете make, который использует эти make файлы для вызова компилятора по мере необходимости, когда изменяются различные файлы. У make файлов также есть правила для повторного запуска cmake, если какой-либо из файлов ввода cmake изменяется.