Ответ 1
cmake - генератор Makefile.
Когда вы вызываете cmake [path]
, вы просите его сгенерировать Makefile в текущем каталоге, следуя инструкциям, приведенным в [path]/CMakeLists.txt
Обычно cmake выводит некоторые сообщения во время работы, а после того, как это делается без ошибок, вы можете ввести "make" для выполнения вашего недавно созданного Makefile.
Файлы CMakeLists.txt могут ссылаться на другой файл CMakeLists.txt в подкаталогах, поэтому вам обычно интересует только CMakeLists.txt каталога top, а не другие.
Использование пустого каталога "build" - это метод, называемый "сборкой вне источника", в котором все ваши сгенерированные файлы (.o, исполняемый, Makefile, anyany) генерируются в отдельном каталоге "build" и не смешиваются с исходными файлами. Если вы хотите очистить все, вы можете удалить все содержимое каталога сборки.
Фактически, вы можете поместить свой каталог "build" в любом месте, если вы дадите cmake правильный путь к началу CMakeLists.txt. Вы можете даже иметь несколько каталогов сборки. Это очень полезно, если вам нужно несколько разных сборок в одно и то же время (с различными опциями, разными версиями gcc и т.д.).
В старых программах вы также создаете Makefile, но с помощью ./configure
(это называется автоматическими инструментами. Возможно, вы уже столкнулись с этим). cmake считается преемником автоинструментов.