Как использовать CMake?

103

Я пытаюсь использовать CMake для компиляции opencv.

Я читаю руководство, но не могу понять, что такое файлы CMakeLists и как они связаны с графическим интерфейсом CMake?

Также не мог понять, что такое make-файлы, они же CMakeLists?

И что это за файл, который я открываю с помощью visual-studio?

Литал Маатук
источник
Если вопрос связан с Windows, это следует упомянуть в нем (возможно, с windows
Базиль Старынкевич
Что касается CMake 3.13.3, платформы Windows и IDE Visual Studio 2017, я предлагаю: wikihow.com/Use-CMake С уважением.
Джордж Теодосио

Ответы:

31

CMake берет файл CMakeList и выводит его в формат сборки, зависящий от платформы, например Makefile, Visual Studio и т. Д.

Сначала вы запускаете CMake в CMakeList. Если вы используете Visual Studio, вы можете загрузить выходной проект / решение.

холтавольт
источник
2
Что такое Makefile? Где мне найти файл проекта / решения для visualstudio?
lital maatuk
3
После того, как вы запустите cmake (или CMakeSetup и нажмете «генерировать»), вы сможете найти Makefile (если unix) или файлы проекта где-нибудь в дереве проекта. Расположение можно указать в CMakeList. Вот короткая презентация, которую я нашел в вики CMake, которая может оказаться полезной: elpauer.org/stuff/learning_cmake.pdf
holtavolt
2
CMake настраивает весь проект с использованием выбранного вами формата сборки, то есть настраивает все так, чтобы вы могли использовать, например, Visual Studio для компиляции. По умолчанию (по крайней мере, в Linux) он создает проект, который вместо этого использует Make. Make используется для фактической сборки проекта, а не для его настройки или настройки. Итак, сначала вам нужно будет использовать CMake для настройки проекта, а затем запустить Make для компиляции и сборки.
leinaD_natipaC
156

Я не знаю о Windows (никогда не использовал ее), но в системе Linux вам просто нужно создать каталог сборки (в верхнем каталоге исходного кода)

mkdir build-dir

зайти внутрь

cd build-dir

затем запустите cmakeи укажите на родительский каталог

cmake ..

и наконец запустить make

make

Обратите внимание, что makeи cmake- это разные программы. cmakeявляется Makefileгенератором, а makeутилита управляется Makefileтекстовым файлом. Смотрите cmake & make страницы википедии.

NB: В Windows cmakeможет работать, поэтому может потребоваться другое использование. Вам нужно будет прочитать документацию (как я сделал для Linux)

Василий Старынкевич
источник
В чем разница между cmake и make? это разные программы?
lital maatuk
4
Отличный ответ; Я не мог понять, как получить файлы сборки в подкаталоге. Я не понимаю, почему в официальной документации об этом не упоминается.
TheBigB
Это работает в Linux, но в Windows не работает при обнаружении компилятора C / C ++. Есть идеи, как это сделать?
bartlomiej.n
Это зависит от того, как настроен ваш конкретный компьютер. Убедитесь, что ваша PATHпеременная верна. Кстати, я никогда в жизни не пользовался Windows (и свою первую программу написал в 1974 году)
Базиль Старынкевич
2
Так много положительных отзывов, а ответ ничего не говорит о Visual Studio.
Abyx
10

Да, cmake и make - это разные программы. cmakeявляется (в Linux) генератором MakefileMakefile -s - это файлы, управляющие makeутилитой). Существуют и другие генераторы Makefile (в частности, configure, autoconf и т. Д.). И вы можете найти другие программы автоматизации сборки (например, ниндзя ).

Василий Старынкевич
источник
Я думаю, это немного сбивает с толку. cmake - это генератор системы сборки, и одна из вещей, которые он может генерировать, - это make-файлы (как в gnu.org/software/make ). Однако есть много других систем, которые он может генерировать, и они не являются «генераторами Makefile». В macos (и, вероятно, везде), если вы запустите cmake --help, он выдаст вам длинный список генераторов, которые у него есть. Например, cmake может генерировать проекты Xcode - ничего общего с make.
Джеймс Мур
0

Что касается CMake 3.13.3, платформы Windows и IDE Visual Studio 2017, я предлагаю это руководство . Вкратце предлагаю:
1. Скачать cmake> разархивировать> выполнить.
2. В качестве примера загрузите GLFW> разархивируйте его> создайте внутри папки Build .
3. В cmake выберите «Источник»> «Обзор« Сборка »>« Настроить и создать ».
4. Создайте свое решение в Visual Studio 2017.
5. Получите двоичные файлы.
С уважением.

Джордж Теодосиу
источник