#c #visual-studio #cmake
#c #visual-studio #cmake
Вопрос:
Я пытаюсь использовать CMake для компиляции opencv.
Я читаю учебник, но не могу понять, что такое файлы CMakeLists и как это связано с графическим интерфейсом CMake?
Также не удалось понять, что такое makefile, совпадают ли они с CMakeLists?
И какой это файл, который я в конце концов открываю с помощью visual-studio?
Комментарии:
1. Если вопрос связан с Windows, это должно быть упомянуто в нем (возможно, с
windows
тегом)2. Что касается CMake 3.13.3, платформы Windows и IDE Visual Studio 2017, я предлагаю: wikihow.com/Use-CMake С уважением.
Ответ №1:
Я не знаю о Windows (никогда не использовал ее), но в системе Linux вам просто нужно создать каталог сборки (в верхнем исходном каталоге)
mkdir build-dir
зайдите в него
cd build-dir
затем запустите cmake
и укажите на родительский каталог
cmake ..
и, наконец, запустите make
make
Обратите внимание, что make
и cmake
разные программы. cmake
это Makefile
генератор, и make
утилита управляется Makefile
текстовым файлом. Смотрите страницы cmake amp; make в Википедии.
ПРИМЕЧАНИЕ: В Windows cmake
может работать, поэтому может потребоваться использовать по-другому. Вам нужно будет прочитать документацию (как я сделал для Linux)
Комментарии:
1. Отличный ответ; Я не мог понять, как получить файлы сборки в подкаталоге. Я не понимаю, почему в официальной документации это не упоминается.
2. Это работает в Linux, но в Windows это прерывается при обнаружении компилятора C / C . Есть идеи, как это сделать?
3. Это зависит от того, как настроен ваш конкретный компьютер. Убедитесь, что ваша
PATH
переменная верна. Кстати, я никогда в жизни не использовал Windows (и написал свою первую программу в 1974 году)4. Так много голосов, а в ответе ничего не говорится о Visual Studio.
5. @byx: AFAIK, Visual Studio — это проприетарный компилятор C (не то же самое, что Visual Studio Code, который является редактором исходного кода), который работает только в Windows. Мой ответ для Linux
Ответ №2:
CMake принимает файл CMakeList и выводит его в формат сборки, зависящий от платформы, например, Makefile, Visual Studio и т. Д.
Сначала вы запускаете CMake в CMakeList. Если вы работаете в Visual Studio, вы можете загрузить выходной проект / решение.
Комментарии:
1. Что такое Makefile? Где я могу найти файл проекта / решения для visualstudio?
2. После запуска cmake (или CMakeSetup и нажатия кнопки generate) вы должны быть в состоянии найти Makefile (если unix) или файлы проекта где-нибудь в дереве проекта. Местоположение может быть указано в CMakeList. Вот короткая презентация, которую я нашел в CMake wiki, которая может оказаться вам полезной: elpauer.org/stuff/learning_cmake.pdf
3. CMake настраивает весь проект, используя формат сборки по вашему выбору, что означает, что он настраивает все так, чтобы вы могли использовать, например, Visual Studio для компиляции. По умолчанию (по крайней мере, в Linux) он создает проект, который вместо этого использует Make. Make используется для фактической сборки проекта, а не для его настройки или настройки. Итак, сначала вам нужно будет использовать CMake для настройки проекта, затем запустить Make для компиляции и сборки.
4. Что вы подразумеваете под «принимает файл CMakeList»? Как мне сказать, чтобы принять это? Где в пользовательском интерфейсе CMake я могу выбрать этот файл? Нет меню File / Open или чего-то еще. Вместо этого он спрашивает: «Где находится исходный код» — и я не могу на это ответить. Я надеялся, что эта информация есть в файле CMakeList.
Ответ №3:
Да, cmake и make — это разные программы. cmake
является ли (в Linux) генератором Makefile (а Makefile-s — это файлы, управляющие make
утилитой). Существуют и другие генераторы Makefile (в частности, configure и autoconf и т. Д.). И вы можете найти другие программы автоматизации сборки (например, ninja).
Комментарии:
1. Я думаю, что это немного сбивает с толку. cmake — это генератор системы сборки, и одна из вещей, которые он может генерировать, — это файлы makefile (как в gnu.org/software/make ). Однако существует много других систем, которые он может генерировать, и они не являются «генераторами Makefile». В macos (и, вероятно, везде), если вы запустите cmake —help, он выдаст вам длинный список генераторов, которые у него есть. Например, cmake может генерировать проекты Xcode — ничего общего с make.
Ответ №4:
CMake (кроссплатформенный make) — это генератор системы сборки. Он не создает ваш исходный код, вместо этого генерирует то, что нужно системе сборки: сценарии сборки. При этом вам не нужно писать или поддерживать файлы сборки, зависящие от платформы. CMake использует язык CMake относительно высокого уровня, который обычно записывается в CMakeLists.txt
файлах. Ваш общий рабочий процесс при использовании сторонних библиотек обычно сводится к следующим командам:
cmake -S thelibrary -B build
cmake --build build
cmake --install build
Первая строка, известная как шаг настройки, генерирует файлы сборки в вашей системе. -S
(ource) — это источник библиотеки, а -B
(uild) — папка. CMake возвращается к созданию сборки в соответствии с вашей системой. это будет MSBuild в Windows, GNU Makefiles в Linux. Вы можете указать сборку, используя -G
параметр (enerator), например:
cmake -G Ninja -S libSource -B build
в конце этого шага генерируются сценарии сборки, такие как Makefile, файлы * .sln и т.д. в каталоге сборки.
Вторая строка вызывает фактическую команду сборки, это похоже на вызов make
в папке сборки.
Третья строка устанавливает библиотеку. Если вы используете Windows, вы можете быстро открыть созданный проект с помощью , cmake --open build
.
Теперь вы можете использовать установленную библиотеку в своем проекте с настройкой CMake, написав свою собственную CMakeLists.txt досье. Для этого вам нужно будет создать свою цель и найти пакет, который вы установили, с помощью find_package
command , которая экспортирует имена целевых библиотек и свяжет их с вашей собственной целью.
Ответ №5:
Cmake из терминала Windows:
mkdir build
cd build/
cmake ..
cmake --build . --config Release
./Release/main.exe
Комментарии:
1. Если вы хотите включить файлы в отдельный
installdir
подкаталог внутриbuild
каталога, вы можете сделать:cmake -DCMAKE_INSTALL_PREFIX=./installdir ..
Ответ №6:
Что касается CMake 3.13.3, платформы Windows и IDE Visual Studio 2017, я предлагаю это руководство. Вкратце я предлагаю:
1. Загрузите cmake> распакуйте его> запустите.
2. В качестве примера загрузите GLFW> распакуйте его> создайте внутреннюю сборку папки.
3. В cmake перейдите в раздел «Исходный код»> «Сборка»> «Настройка и создание».
4. В Visual Studio 2017 создайте свое решение.
5. Получите двоичные файлы.
С уважением.