Как из исходников собрать программу

CMake — это набор инструментов, который позволяет создавать, тестировать и упаковывать программное обеспечение. Это семейство инструментов доступно сразу на нескольких платформах и распространяется под открытым исходным кодом. Чаще всего CMake применяют для упрощения процесса компиляции созданного ПО путём использования простых кроссплатформенных файлов конфигурации.Также с помощью CMake создаются специальные файлы makefile — наборы инструкций, которые позволяют использовать возможности компилятора в дальнейшем при автоматизации сборки.

Автором CMake является команда Kitware. Создание этого ПО было продиктовано необходимостью формирования мощной среды, которая могла бы работать сразу на нескольких платформах с проектами, где открыт исходный код (прежде всего — с Insight Segmentation and Registration Toolkit и Visualization Toolkit). В этом материале вы узнаете, как установить CMake Ubuntu, используя графический интерфейс либо командную строку. Если вы пытаетесь собрать программу и получаете ошибку cmake not found, то эта статья будет для вас очень полезной.

Linux: сборка пакетов из исходников

Установка CMake в Ubuntu

1. Менеджер приложений

На момент написания этой статьи использовалась самая последняя версия CMake (3.15.2). Она была доступна в рамках известного всем магазина Snap Store. Ниже вы узнаете, как установить CMake через штатный в Менеджер приложений в Ubuntu. Если вы не хотите тратить много времени на взаимодействие с командной строкой, то работа с графическим интерфейсом должна вам понравиться из-за своей простоты. На панели инструментов, расположенной слева, щёлкните значок Менеджер приложений.

В верхней части открывшегося окна нажмите на значок поиска и в появившейся строке введите CMake. Результаты отобразятся следующим образом: Первый пакет в результатах поиска — это и есть нужный нам файл, доступный в рамках магазина Snap Store.

Щёлкните по этой записи и вы попадёте в раздел с подробной информацией о приложении, который будет выглядеть так:

Нажмите кнопку Установить, чтобы запустить процесс установки CMake. Возможно, вам придётся ввести свой пароль в окошке аутентификации, которе появится сразу после нажатия кнопки Установить. Это одна из форм защиты в Ubuntu — только авторизированный пользователь может устанавливать программное обеспечение в этой системе. Введите свой пароль и нажмите кнопку Enter. После этого вы сможете наблюдать за статусом установки на отображающемся графическом индикаторе.

После успешной установки система выдаст вам следующее сообщение: Из этого окна уже можно запустить CMake (или тут же, например, удалить).

Установка программ в Linux из исходников tar.gz/ Процесс полностью с ошибками и траблшутингом

2. Менеджер пакетов snap и apt

Такую же версию CMake можно установить через командную строку, если воспользоваться следующей командой: sudo snap install cmake Установка cmake ubuntu 18.04 из официальных репозиториев выполняется командой:

sudo apt install cmake

3. Сборка CMake из исходников

Если по каким-то причинам вы не хотите использовать графический интерфейс, или вы хотите самую свежую версию, можно прибегнуть к помощи командной строки. Нам надо будет скачать исходный код с официального сайта (https://cmake.org/download/), скомпилировать его, а потом установить. Откройте командную строку — для этого либо найдите приложение «Терминал», либо нажмите сочетание клавиш Ctrl+Alt+T. Введите команду, которая начнёт загрузку исходного кода: Когда tar.gz полностью скачается, его нужно распаковать. Воспользуемся следующей командой: tar -zxvf cmake-3.15.2.tar.gz Перейдём с помощью терминала к папке с распакованными файлами: Чтобы провести компиляцию скачанного кода, выполним ещё одну команду:

Читайте также:
Сделать проект в школу программа

После правильного выполнения всех операций, командная строка выдаст следующий результат: Теперь можно запустить процесс установки с помощью простой команды: Затем выполните ещё одну команду: Процесс установки завершён. Теперь можно проверить версию CMake, чтобы убедиться в правильности своих действий.

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

Как удалить CMake?

Если вы решили удалить CMake, который был установлен через Менеджер приложений, то этот процесс будет происходить следующим образом. Снова откройте Менеджер приложений, в открывшемся списке найдите пункт CMake (рядом с ним будет надпись Установлен). Нажмите на иконку приложения, перейдите к следующему экрану и найдите кнопку Удалить. Так будет запущен процесс деинсталляции. После этого система вновь предложит ввести вам пароль — и сразу же после этого приложение будет удалено. Источник

Введение в CMake

CMake — кроcсплатформенная утилита для автоматической сборки программы из исходного кода. При этом сама CMake непосредственно сборкой не занимается, а представляет из себя front-end. В качестве back-end`a могут выступать различные версии make и Ninja. Так же CMake позволяет создавать проекты для CodeBlocks, Eclipse, KDevelop3, MS VC++ и Xcode. Стоит отметить, что большинство проектов создаются не нативных, а всё с теми же back-end`ами.

Для того что бы собрать проект средствами CMake, необходимо в корне дерева исходников разместить файл CMakeLists.txt, хранящий правила и цели сборки, и произвести несколько простых шагов.
Разберёмся на примерах.

Пример 1. Hello, World:

Пример 2. Библиотеки:

Переменные могут хранить списки значений, разделённых пробеламитабуляциямипереносами: Оба варианта правильные
Что бы получить значение переменной ипользуем конструкцию: Итак, эта версия нашего проекта включает в себя одну статическую библиотеку, собираемую из исходников. Если заменить «STATIC» на «SHARED», то получим библиотеку динамическую. Если тип библиотеки не указать, по умолчанию она соберётся как статическая.
При линковке указываются все необходимые библиотеки: Как и при ручной компиляции, имена библиотек указываются без стандартного префикса «lib».
Итак, сборка библиотек с CMake не вызывает проблем, при этом тип библиотеки статическаядинамическая меняется лишь одним параметром.

Пример 3. Подпроекты:

В файле подпроекта ничего нового для вас нет. А вот в основном файле новые команды: main.cpp мы не меняли, а foo.h перенесли. Команда указывает компилятору, где искать заголовочные файлы. Может быть вызвана несколько раз. Хидеры будут искаться во всех указаных директориях.

Указываем директорию с подпроектом, который будет собран как самостоятельный.
Вывод: проекты на CMake можно объединять в довольно сложные иерархические структуры, причем каждый подпроект в реальности является самостоятельным проектом, который в свою очередь может сам состоять из подпроектов. Это позволяет легко разбить вашу программу на необходимое количество отдельных модулей. Примером такого подхода может служить KDE.

Пример 4. Поиск библиотек:

CMake обладает достаточно развитыми средствами поиска установленых библиотек, правда они не встроеные, а реализованы в виде отдельных модулей. В стандартной поставке довольно много модулей, но некоторые проекты (например Ogre) поставляют свои. Они позволяют системе автоматически определить наличие необходимых для линковки проекта библиотек.
На debian модули располагаются в /usr/share/cmake-2.8/Modules/ (у вас версия может отличаться). За поиск библиотек отвечают модули, называющиеся FindNAME.cmake, где NAME — имя библиотеки. Думаю, смысл должен быть понятен. Первый и второй блок — поиск библиотеки. Если в системе её нет, выведется сообщение об ошибке и завершается выполнение cmake.

Читайте также:
К объектам авторских прав также относятся программы для эвм которые охраняются как

Третий блок похож, только он ищет не целый пакет библиотек, а лишь необходимый компонент. Каждый такой автоматизированый поиск определяет после выполнения как минимум 3 переменные:
SDL_FOUND, LIBXML2_FOUND, Boost_FOUND — признак присутствия бибилиотеки;
SDL_LIBRARY, LIBXML2_LIBRARIES, Boost_LIBRARIES — имена библиотек для линковки;
SDL_INCLUDE_DIR, LIBXML2_INCLUDE_DIR, Boost_INCLUDE_DIRS — пути к заголовочным файлам.
Если с первыми более или менее понятно, то вторые и третьи мне доставили много хлопот — половина имеет имена в единственном числе, половина — во множественном. Но оказалось, это легко отследить. В каждом модуле вначале есть коментарии, там описаны определяемые переменные. Посмотрите, например, /usr/share/cmake-2.8/Modules/FindLibXml2.cmake
Как видите, CMake способен сам определить наличие и местоположение необходимых библиотек и заголовочных файлов. В принципе, это должна уметь любая система автоматической сборки, иначе смысл в ней?

Пример 5. Внешние библиотеки и объектные файлы:

Если вы пишите для «дяди», а злой «дядя» любит самописные библиотеки и делиться исходниками не желает, поэтому присылает готовую библиотеку, то вы по адресу.
Объектные файлы в CMake стоят на ряду с исходниками — достаточно включить объектник в список файлов для компиляции.
С библиотеками потуже. Как известно, статическая библиотека это не что иное, как ar-архив, внутри которого лежат обычные объектники, никак не связаные между собой. Вы, наверное, уже догадались, как я поступал сначала. Да, просто потрошил библиотеку. Но потом был найден способ поэлегантнее: Слово «IMPORTED», указывает, что библиотека берётся извне.
В CMake каждая цель имеет параметры, а set_property позволяет их изменять.
Линкуется такая библиотека стандартно:

Для динамических библиотек все аналогично, только тип «SHARED», расширение — «.so».
К сожалению, поддержка несистемных библиотек реализована немного костыльно. Возможно, я просто не знаю правильного варианта, поэтому буду рад, если «ткнете мордочкой». С другой стороны это не навороченый экзоскелет с системой жизнеобеспечения, а простейший костыль из двух строк.

Генераторы:

/cmake/example_3/ -G «KDevelop3 — Unix Makefiles»

Заключение:

  • один проект — один файл. Не нужно хранить кучу скриптов настройки, сборки и прочего хлама;
  • Скорость работы в сравнении с autotools;
  • простой и понятный синтаксис, конечно с элегантностью питона не потягаться, но и не брейнфак, в конце концов.;
  • является front-end`ом для множества IDE;
  • отображение прогресса — довольно удобно;
  • цветной вывод — в серые будни немного краски не помешает;

Для Sublime Text есть плагин, добавляющий подсветку синтаксиса CMake, он так и называется — «CMake».
Примеры

Источник: onecomp.ru

Просто о make

Меня всегда привлекал минимализм. Идея о том, что одна вещь должна выполнять одну функцию, но при этом выполнять ее как можно лучше, вылилась в создание UNIX. И хотя UNIX давно уже нельзя назвать простой системой, да и минимализм в ней узреть не так то просто, ее можно считать наглядным примером количество- качественной трансформации множества простых и понятных вещей в одну весьма непростую и не прозрачную. В своем развитии make прошел примерно такой же путь: простота и ясность, с ростом масштабов, превратилась в жуткого монстра (вспомните свои ощущения, когда впервые открыли мэйкфайл).

Мое упорное игнорирование make в течении долгого времени, было обусловлено удобством используемых IDE, и нежеланием разбираться в этом ‘пережитке прошлого’ (по сути — ленью). Однако, все эти надоедливые кнопочки, менюшки ит.п. атрибуты всевозможных студий, заставили меня искать альтернативу тому методу работы, который я практиковал до сих пор. Нет, я не стал гуру make, но полученных мною знаний вполне достаточно для моих небольших проектов. Данная статья предназначена для тех, кто так же как и я еще совсем недавно, желают вырваться из уютного оконного рабства в аскетичный, но свободный мир шелла.

Читайте также:
Как отменить скачивание программы

Make- основные сведения

make — утилита предназначенная для автоматизации преобразования файлов из одной формы в другую. Правила преобразования задаются в скрипте с именем Makefile, который должен находиться в корне рабочей директории проекта. Сам скрипт состоит из набора правил, которые в свою очередь описываются:

1) целями (то, что данное правило делает);
2) реквизитами (то, что необходимо для выполнения правила и получения целей);
3) командами (выполняющими данные преобразования).

В общем виде синтаксис makefile можно представить так:

# Индентация осуществляется исключительно при помощи символов табуляции, # каждой команде должен предшествовать отступ : .

То есть, правило make это ответы на три вопроса:

—> [Как делаем? (команды)] —>

Несложно заметить что процессы трансляции и компиляции очень красиво ложатся на эту схему:

—> [трансляция] —>
—> [линковка] —>

Простейший Makefile

Предположим, у нас имеется программа, состоящая всего из одного файла:

/* * main.c */ #include int main()

Для его компиляции достаточно очень простого мэйкфайла:

hello: main.c gcc -o hello main.c

Установка программ Linux из исходников

В предыдущих материалах мы говорили о форматах установочных файлов, портативных версиях приложений Linux и о том, как устанавливать программы через терминал. Ссылки на эти материалы вы можете найти ниже. Сегодня же поговорим про установку программ из исходников.

Для чего используется установка из исходников?

Умение устанавливать пакеты из исходников пригодится вам в случае, если нужна программа, которой нет в репозиториях, либо когда нужна определенная версия. Например, мне нужен был текстовый консольный редактор Neovim версии 8.0, но в репозиториях дистрибутива имелась только седьмая версия. В такой ситуации я установил редактор из исходников.

Все просто, как приготовление пирога

Чтобы проще было понять процесс установки, давайте сравним его с приготовлением пирога. Алгоритм действий, в таком случае, следующий:

  • взять ингредиенты
  • замесить из них тесто
  • залить тесто в форму и поставить в печь
  • достать готовый пирог и съесть

В качестве «пирога» у нас будет программа под названием Hello. Она при обращении к себе через терминал возвращает фразу «Здравствуй, мир» или «Hello World» знакомую всем, кто когда-либо начинал изучать программирование.

Берем ингредиенты

Для начала нам понадобятся те самые исходники, из которых будем собирать программу. Скачать их можно на официальном сайте. Файл имеет формат tar.gz, что говорит нам о том, что это архив. После скачивания нужно перейти в директорию с архивом и распаковать его, введя в терминал команду:

После нужно перейти в распакованный каталог. Мы помним, что сделать можно благодаря команде:

Замешиваем тесто

Внутри практически каждого распакованного архива с исходниками содержится инструкция по сборке. Обычно она называется INSTALL или README. Просмотреть содержимое этого файла можно при помощи команды cat (об этом упоминалось в одной из предыдущих заметок). То, что описано в файле INSTALL нашей программы повторяет дальнейшие действия, потому перейдем к делу. Для «замешивания ингредиентов в тесто» вводим команду:

Слэш и точка вначале говорят о том, что команду нужно выполнить в текущем каталоге. Можно также сразу указать директорию для установки будущей программы, используя ключ —prefix:

./configure —prefix=

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru