m4

Мощный макропроцессор общего назначения, используемый в Unix-подобных системах для обработки текстовых файлов, генерации кода и автоматизации шаблонов. Он предоставляет язык макросов, который позволяет определять и расширять текстовые шаблоны, что делает его ключевым компонентом многих систем сборки, включая GNU Autotools. M4 широко применяется для конфигурации программного обеспечения, создания документации и обработки текста.

Особенности

  • поддержка рекурсивного расширения макросов и аргументов;
  • встроенные функции для работы со строками, числами и файлами;
  • возможность определения пользовательских макросов с аргументами;
  • поддержка условных операций и циклов.

Основные компоненты

M4 состоит из интерпретатора макропроцессора, который выполняет преобразование входного текста в выходной на основе определённых макросов и правил (подробнее с документацией можно ознакомиться здесь).

Базовые макросы и синтаксис

Язык M4 предоставляет набор встроенных макросов для выполнения основных операций, таких как определение макросов, работа со строками и числами, а также управление потоком выполнения. Макросы вызываются по имени, за которым следует список аргументов в скобках.

Основные встроенные макросы:

  • define — определение нового макроса;
  • undefine — удаление определения макроса;
  • defn — получение определения макроса (без расширения);
  • pushdef и popdef — управление определением макросов через стек;
  • ifdef, ifelse — условные операторы;
  • len, substr, index — функции для работы со строками;
  • eval — вычисление арифметических выражений;
  • include, sinclude — включение содержимого файла;
  • divert и undivert — управление потоком вывода.

Работа с аргументами и цитатами

M4 использует символ обратной кавычки (`) и апостроф (') для цитирования аргументов, что позволяет контролировать процесс расширения макросов. Правильное использование цитат важно для избежания непреднамеренного расширения.

Правила цитирования:

  • Обратная кавычка начинает цитату, апостроф заканчивает;
  • Внутри цитаты макросы не расширяются;
  • Функция changequote позволяет изменить символы цитирования.

Управление потоком вывода

M4 предоставляет механизм диверсий (diversions), который позволяет накапливать текст во внутренних буферах и выводить его в определённом порядке. Это полезно для генерации сложных структур, таких как код программы с разделением на части.

Функции диверсий:

  • divert(n) — переключение вывода на буфер n (от -1 до 10);
  • undivert(n) — вывод содержимого буфера n;
  • divnum — получение текущего номера диверсии.

Поддержка регулярных выражений и подстановок

M4 включает функции для работы с регулярными выражениями и выполнения подстановок в тексте, что позволяет выполнять сложные текстовые преобразования.

Функции для подстановок:

  • regexp — поиск по регулярному выражению;
  • patsubst — подстановка по шаблону;
  • translit — замена символов.

Интеграция с внешними командами

M4 может запускать внешние команды и использовать их вывод в процессе обработки текста. Это позволяет интегрировать макропроцессор с другими инструментами и системами.

Функции для работы с внешними командами:

  • syscmd — выполнение системной команды;
  • esyscmd — выполнение команды и включение её вывода в результат;
  • sysval — получение кода возврата последней команды.

Использование в GNU Build System

M4 является неотъемлемой частью GNU Build System (Autotools), где он используется для создания configure-скриптов из шаблонов configure.ac. Макросы Autoconf написаны на M4 и определяют правила проверки системы и генерации кода.

Роль в Autotools:

  • Обработка файлов configure.ac и Makefile.am;
  • Генерация стандартных проверок и тестов;
  • Создание переносимых configure-скриптов;
  • Определение макросов для работы с компиляторами, библиотеками и системами.

Использование в проекте

Документация по использованию Conan-пакетов для разработки приложений для ОС Аврора.

На сервере Conan библиотеки заранее собраны и размещены под различные версии ОС Аврора 4 и ОC Аврора 5. Для данных версий представлены архитектуры armv7hl, aarch64 и x84_64.

Библиотеку можно использовать в проекте с помощью данного conanfile.py

from conan import ConanFile

class Application(ConanFile):
    settings = "os", "compiler", "arch", "build_type"
    generators = "PkgConfigDeps"

    requires = (
        "m4/1.4.19@aurora",
    )    

Процесс локальной сборки описан в документации.

m4

GNU M4 is an implementation of the traditional Unix macro processor
Лицензия
GPL-3.0-only
Версия
Домашняя страница
Скачать
x86_64
169.89 Kb
MD5: 1601370b6254075f03e0c8b70b26f582
Updated: 08.04.2026, 20:30:38
armv8
165.76 Kb
MD5: 8e7b3c8fd68b9c9b140225f868f0faef
Updated: 08.04.2026, 20:30:33
armv7
145.46 Kb
MD5: b188b06691cb70b65b77fcfaa737e12a
Updated: 08.04.2026, 20:30:37
Использование в проекте

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.