2552
Комментарий:
|
4949
|
Удаления помечены так. | Добавления помечены так. |
Строка 34: | Строка 34: |
* (вариант — сто же самое про CMAKE) | |
Строка 37: | Строка 38: |
библиотеку [[https://www.pcre.org/current/doc/html/index.html|PCRE2]] и её сборочный компонент. В ALT это пакет `libpcre2-devel`. |
* библиотеку [[https://www.pcre.org/current/doc/html/index.html|PCRE2]] и её сборочный компонент. В ALT это пакет `libpcre2-devel`. 1. Добейтесь работоспособности двух простых программ: * [[attachment:Window.c]] (собирать с с `-lncursesw`) * [[attachment:pcredemo.c]] (собирать с `-lpcre2-8`). Для того, чтобы найти регулярное выражение в строке, надо: 1. Скомпилировать это РВ (`pcre2_compile`) 1. Подготовить структуру данных, в которой будут храниться результаты поиска (`pcre2_match_data_create_from_pattern`) 1. Поискать (`pcre2_match`) 1. Вывести результат. Обратите внимание на то, что в результат входит таблица `ovector`, в которой есть сама найденная подстрока, а также её части, соответствующие выделенным компонентам РВ: {{{#!highlight console $ ./a.out "(zo)(\w+)(b)" "zo-bizoebwHbr" 5: zoebwHb 5: zo 7: ebwH 11: b }}} * При установленном locale программа поддерживает многобайтную кодировку за счёт параметра `PCRE2_UCP`: {{{#!highlight console $ ./a.out "(*UTF)\w+" "qweФЫВА" 0: qweФЫВА $ ./a.out "\w+" "qweФЫВА" 0: qwe }}} 1. Создайте подкаталог `05_Environmental` в вашем git-репозитории и напишите программу, которая откроет три окна, в первом введёт RE-шаблон, во втором — строку, а в третьем будет выводить сообщения об ошибках и результат * Используйте `autotools` или `cmake` с проверкой наличия библиотек и include-файлов * Не храните никаких генератов (в т. ч. результаты работы `autoreconf`, например, `Makefile`) * Предусмотрите цель `allclean` для удаления таких генератов * Предусмотрите параметр `configure --without-UTF`, который убирает флаг `PCRE2_UCP` из кода. |
Сборочные зависимости и адаптация к окружению
Что не умеет 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). Для того, чтобы найти регулярное выражение в строке, надо:
Скомпилировать это РВ (pcre2_compile)
Подготовить структуру данных, в которой будут храниться результаты поиска (pcre2_match_data_create_from_pattern)
Поискать (pcre2_match)
Вывести результат. Обратите внимание на то, что в результат входит таблица ovector, в которой есть сама найденная подстрока, а также её части, соответствующие выделенным компонентам РВ:
При установленном locale программа поддерживает многобайтную кодировку за счёт параметра PCRE2_UCP:
Создайте подкаталог 05_Environmental в вашем git-репозитории и напишите программу, которая откроет три окна, в первом введёт RE-шаблон, во втором — строку, а в третьем будет выводить сообщения об ошибках и результат
Используйте autotools или cmake с проверкой наличия библиотек и include-файлов
Не храните никаких генератов (в т. ч. результаты работы autoreconf, например, Makefile)
Предусмотрите цель allclean для удаления таких генератов
Предусмотрите параметр configure --without-UTF, который убирает флаг PCRE2_UCP из кода.
- Установить в сборочное окружение