Что делает cmake ..?
Я получил исходный код проекта Box2D и хочу скомпилировать его часть для тестирования. Папка проекта содержит папки, такие как: freeglu glui testbed(демо) helloword(демо) Box2D Сборка 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.
3 ответа
cmake - это генератор Makefile.
Когда вы звоните cmake [path]
вы просите его создать Makefile в текущем каталоге, следуя инструкциям, приведенным в [path]/CMakeLists.txt
Обычно cmake выводит некоторые сообщения во время работы, и после того, как это сделано без ошибок, вы можете набрать "make", чтобы выполнить ваш вновь созданный Makefile.
ФайлыCMakeLists.txt могут ссылаться на другой файл CMakeLists.txt в подкаталогах, поэтому обычно вас интересует только CMakeLists.txt из верхнего каталога, а не другие.
Использование пустого каталога "build" - это метод, называемый "сборкой вне источника", в которой все ваши сгенерированные файлы (.o, исполняемый файл, Makefile, .anything) генерируются в отдельном каталоге "build" и не смешиваются с исходные файлы. Если вы хотите очистить все, вы можете удалить все содержимое каталога сборки.
Фактически, вы можете поместить свой каталог "build" в любое место, если вы дадите cmake правильный путь к верхнему CMakeLists.txt. Вы можете даже иметь несколько каталогов сборки. Это очень полезно, если вам нужно несколько разных сборок одновременно (с разными опциями, разными версиями gcc и т. Д.)
В старых программах вы также генерируете Makefile, но используя ./configure
(это называется автоинструмент. Возможно, вы уже сталкивались с этим). cmake считается преемником автоинструментов.
cmake ..
генерирует make-файлы в текущем каталоге, используя ../CMakeLists.txt
файл в качестве отправной точки. Команда make, выполненная после этого, собирает программу, используя сгенерированный make-файл (ы) в качестве входных данных. Это удобно для хранения исходного кода и построения результатов в разных папках. Общий синтаксис: cmake source-dir (конечно, есть много других ключей).
Что ж, ..
является сокращением для родительской папки, поэтому она, вероятно, будет воздействовать на все, что находит в Box2D_v2.2.1
,