Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
177 / 15 / 11
Регистрация: 05.12.2017
Сообщений: 131
1

Сборка и CMake

20.12.2018, 11:09. Показов 1470. Ответов 5

Друзья, всем привет!
Недавно все чаще в своей жизни стал встречать упоминания CMake'а и в связи с этим пытаюсь разобраться что это за обертка для сборки такая и для чего она вообще нужна. Почитал, но, к сожалению, не нашел пояснений с примером и в связи с этим не могу понять, когда же CMake может стать необходим, если можно построить проект в своей IDE будь то MSVS, Qt Creator, Code Blocks или что-либо еще.
Если не сложно, дайте пожалуйста комментарий, чтобы можно было понять с точки зрения практики что и зачем, и дальше уже продолжить читать и пытаться что-либо делать со своими сорцами с помощью CMake'а.

p.s. Всех с наступающим Новым Годом!
1

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.12.2018, 11:09
Ответы с готовыми решениями:

CMake. Сборка исходного кода на win32, need help
Доброго времени суток, товарищи. По учебной работе необходимо собрать чужой код. Для сборки нужны...

Сборка glfw: как работает cmake?
Задача: собрать glfw при помощи g++, cmake и make. Всё прекрасно работает, если собирать при...

сборка CMake* windows qt mingw53_32
Добрый день. Второй день пытаюсь собрать библиотеку libtorrent https://libtorrent.org/ под...

Сборка проекта cmake с вложенными cmake
Всем привет. Подскажите пожалуйста вот у меня есть проектный файл и в нем мне надо как то обьявить...

5
884 / 340 / 78
Регистрация: 17.05.2015
Сообщений: 1,095
20.12.2018, 11:39 2
Лучший ответ Сообщение было отмечено al3ex как решение

Решение

Цитата Сообщение от al3ex Посмотреть сообщение
Недавно все чаще в своей жизни стал встречать упоминания CMake'а и в связи с этим пытаюсь разобраться что это за обертка для сборки такая и для чего она вообще нужна
Чтобы не зависеть от среды (от IDE и компиляторов).

Современный мир C++ - это целый зоопарк различных компиляторов и сред разработки.
Вася пишет в Visual Studio (cl),
Петя пишет в Codeblock (gcc),
а Маша предпочитает QtCreator (mingw).

И вот теперь каждый из них хочет скачать с гитхаба какую нибудь библиотеку.
Но ведь автор этой библиотеки не знает, какие среды будут использовать его пользователи.
Не будет же он теперь реализовывать свою библиотеку для каждой возможной IDE по отдельности.

Нужен некий универсальный сценарий сборки проекта.

Вы говорите симейку:
- Хочу проект вижуал студии!
- Не вопрос! - отвечает симейк, и через секунду у вас на руках готовый проект вижуал студии.

Или вы говорите:
- Хочу проект для QtCreator
- Не вопрос! - отвечает симейк, и через секунду у вас на руках проект для QtCreator

CMake сегодня - стандарт де факто.
Универсальный язык сценариев сборки.

Вот только сам он ничего не собирает.
Он преобразовывает свой "универсальный проект" в проект целевой IDE.
Может построить проект для вижуал студии, либо какой другой, какой пожелаете.

Цитата Сообщение от al3ex Посмотреть сообщение
не могу понять, когда же CMake может стать необходим, если можно построить проект в своей IDE будь то MSVS, Qt Creator, Code Blocks или что-либо еще
Допустим, для своей разработки вы использовали MSVS2010.

А у вашего друга Dev-c++.
Что прикажите делать вашему другу?
Вручную чужой для него проект переиначивать для сборки в Dev-c++ ?
Или выкачивать ненужную ему MSVS2010 только ради вашей библиотеки?
Если бы вы сразу реализовали поддержку сборки при помощи CMake,
то у пользователей проблем бы не было никаких.

А так - проще забить на ваш продукт, и взять библиотеку у других разработчиков.
Которые понимают, как важно сделать процедуру сборки/развертывания максимально простой и удобной для своих пользователей
4
Параллельный Кот
1902 / 825 / 349
Регистрация: 25.03.2016
Сообщений: 2,041
20.12.2018, 11:43 3
Преимущество систем сборки в том, что они не привязаны к конкретному компилятору и IDE. Это позволяет делиться исходниками с другими людьми, не принуждая их использовать те же инструменты разработки, что и у вас. IDE могут иметь встроенную поддержку систем сборки.

Вот одна из ненайденных вами статей с примерами: Введение в CMake. Почитайте, возможно найдете ответы на некоторые из вопросов.
1
177 / 15 / 11
Регистрация: 05.12.2017
Сообщений: 131
21.12.2018, 16:28  [ТС] 4
eva2326, valen10, большое вам спасибо)

Добавлено через 6 минут
eva2326, Т.е. я правильно понимаю, что для тренировки могу взять сорцы с любого проекта MSVS, описать правила сборки в CMake под QtCreator и еще какую-нибудь IDE и если все сделано правильно, то везде проект будет запускаться и там и там?
0
Mental handicap
1245 / 623 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
21.12.2018, 16:37 5
Цитата Сообщение от al3ex Посмотреть сообщение
сорцы с любого проекта MSVS
Сорцы всегда одни, это .cpp/.h/.hpp/.c и тд, а вот под что собирать - да, уже решать вам.
0
177 / 15 / 11
Регистрация: 05.12.2017
Сообщений: 131
21.12.2018, 16:41  [ТС] 6
Azazel-San, Да, да, я это и имел ввиду, спасибо!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.12.2018, 16:41

Cmake 5.3.0 и сборка BRL-CAD
Собственно вот -- Looking for pthread.h -- Looking for pthread.h - found -- Looking for...

Сборка CMake в отдельной директории
Приветствую всех, кто заинтересовался данной темой! :senor: Вопрос к знатокам cmake. Как...

Cmake с MinGW - сборка dll
Хочу создать dll, которое будет содержать модули приложения, использующие SDL2. Но в данный момент...

OpenCV сборка через subdirectory(CMake) ошибка линковки
Пытаюсь собрать OpenCV через CMake Исходный код OpenCV лежит в подпапке extern/opencv Подключаю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.