Сборочные зависимости и адаптация к окружению
Что не умеет Make:
… TODO
⇒ Makefile — это генерат!
Autotools
Генерация configure — autoconf
+ autoheader (сводный .h-файл найденного)
Автоматическое конструирование Makefile.in для autoconf — automake
Автоматическая проверка зависимостей в .h-файлах — autoscan
Переопределение процедур поиска для конкретной системы — aclocal
Получение configure — autoreconf (последовательность вызова других утилит)
+ libtool для сборки библиотек и компиляции с ними
Картинка по autotools:
А попроще?
pkg-config — Только способ запуска gcc для .h и библиотек
Расширения для других make-подобных инструментов.
CMake
- Аналог automake
- + Простой входной файл
- + Разные back-end-ы (make, ninja, VC++-проект, XCode), ...
- - Собственный модули определения библиотек
- Поддержка out-of-tree сборки
Д/З
- Прочитать
(и прощёлкать) простую методичку по autotols
слайды по autotools
(заглянуть и использовать по необходимости) в Autotools Mythbuster, Autotools Tutorial, AutoBook
- (вариант — сто же самое про CMAKE)
- Обработчик регулярных выражений.
- Установить в сборочное окружение
ncurses, если ещё не стоит (см. ../03_TerminalProject#A.2BBBQ-.2F.2BBBc-)
библиотеку PCRE2 и её сборочный компонент. В ALT это пакет libpcre2-devel.
- Добейтесь работоспособности двух простых программ:
Window.c (собирать с с -lncursesw)
pcredemo.c (собирать с -lpcre2-8).
Пояснение по работе pcredemo.cДля того, чтобы найти регулярное выражение в строке, надо:
Скомпилировать это РВ (pcre2_compile)
Подготовить структуру данных, в которой будут храниться результаты поиска (pcre2_match_data_create_from_pattern)
Поискать (pcre2_match)
Вывести результат. Обратите внимание на то, что в результат входит таблица ovector, в которой есть сама найденная подстрока, а также её части, соответствующие выделенным компонентам РВ:
При установленном locale программа поддерживает многобайтную кодировку за счёт параметра PCRE2_UCP:
Создайте подкаталог 05_Environmental в вашем git-репозитории и напишите программу, которая откроет три окна, в первом введёт RE-шаблон, во втором — строку, а в третьем будет выводить сообщения об ошибках и результат
Используйте autotools или cmake с проверкой наличия библиотек и include-файлов
Внимание! Почти все имена из pcre.h — это макросы; например pcre2_compile соответствует в libpcre2-8 функции pcre2_compile_8()
Внимание! Стандартная проверка pcre2.h завершается с ошибкой! Не включайте её (разрешается) или найдите причину и путь решения (более сложный вариант).
Не храните никаких генератов (в т. ч. результаты работы autoreconf, например, Makefile)
Предусмотрите цель allclean для удаления таких генератов
Предусмотрите параметр configure --without-UTF, который убирает флаг PCRE2_UCP из кода.
Как-то так
- Установить в сборочное окружение