Что делает cmake.. делать?

Я получил исходный код проекта Box2D и хочу скомпилировать его часть. Папка проекта содержит такие папки, как: freeglu glui testbed (demo) helloword (demo) Box2D Build CMakeFiles

Во всех разных папках есть много CMakeLists.txt. Я думал, что должен собрать все эти файлы, чтобы файлы создавались во всех необходимых местах. Я прочитал это (как нужно делать инструкции):

wget http://box2d.googlecode.com/files/Box2D_v2.2.1.zip
unzip Box2D_v2.2.1.zip
cd Box2D_v2.2.1/Build
cmake ..
make

Что делает cmake.. делать? В папке сборки нет CMakeLists.txt.

Ответы

Ответ 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 считается преемником автоинструментов.

Ответ 2

cmake .. генерирует make файлы в текущем каталоге, используя ../CMakeLists.txt файл в качестве отправной точки. Команда make, выполняемая после этого, создает программу, используя сгенерированный makefile (s) в качестве ввода. Это удобно для хранения исходного кода и создания результатов в разных папках. Общий синтаксис: cmake source-dir (конечно, есть много других переключателей).

Ответ 3

Ну, .. является сокращением для родительской папки, поэтому оно, по-видимому, будет действовать на все, что находит в Box2D_v2.2.1.