15.4.4. Генерация make-файлов
15.4.4. Генерация make-файлов
Одним из неочевидных преимуществ Unix make по сравнению с базами данных зависимостей, встроенных в многие IDE-среды, является то, что make-файлы представляют собой простые текстовые файлы, т.е. файлы, которые могут создаваться программами.
В середине 1980-х годов в дистрибутивах крупных Unix-программ были достаточно распространены сложные специальные shell-сценарии, которые исследовали окружение и использовали собранную информацию для создания нестандартных make-файлов. Такие специальные конфигураторы достигали абсурдных размеров. Автор данной книги однажды написал такой конфигуратор, состоящий из 3000 строк shell-кода, почти вдвое больше любого отдельного модуля программы, для которой он был предназначен, и это не было необычным.
Однажды было решено положить этому конец, и многие представители сообщества настроились на написание инструментов, которые автоматизировали бы часть или весь процесс сопровождения make-файлов. Данные инструментальные средства обычно были призваны разрешить две проблемы.
Одной из проблем была переносимость на другие платформы. Генераторы make-файлов в большинстве случаев создаются для работы на множестве различных аппаратных платформ и вариантов Unix. Как правило, они пытаются определить параметры локальной системы (включая все от размера машинного слова до инструментов, языков служебных библиотек и даже имеющихся в системе программ форматирования документов). Затем генераторы пытаются использовать полученные сведения для написания make-файлов, которые используют средства локальной системы и компенсируют ее индивидуальные особенности.
Другой проблемой является вывод зависимостей. Существует возможность получить множество сведений о зависимостях в семействе файлов исходного C-кода путем анализа самих файлов (особенно их директив #include). Многие генераторы make-файлов выполняют данные действия для автоматического создания make-зависимостей.
Способы достижения данных целей у всех генераторов make-файлов несколько различаются. Вероятно, использовалось не менее десяти генераторов, но большинство из них оказались неадекватными или слишком сложными в управлении или имели оба этих недостатка. Только несколько конфигураторов до сих пор активно используются. Ниже рассматриваются основные представители этого семейства программ. Все они доступны в Internet в виде программ с открытым исходным кодом.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Установка Make-3.79.1
Установка Make-3.79.1 Приблизительное время компиляции: 0.22 SBU Необходимое дисковое пространство: 6 MBИнсталляция MakeДля инсталляции Make выполните:./configure –prefix=/usr && make && make install && chgrp root /usr/bin/make && chmod 755 /usr/bin/makeПояснения командПо умолчанию, /usr/bin/make принадлежит к той
Make
Make Официальная ссылкаMake (3.79.1): ftp://ftp.gnu.org/gnu/make/Содержимое MakeПоследняя проверка: версия 3.79.1.ПрограммыmakeОписанияmakemake автоматически определяет, какие части объемной программы нуждаются в рекомпиляции, и выполняет все необходимые для этого команды.Зависимости MakeПоследняя
Альтернативные аргументы make
Альтернативные аргументы make Существует еще несколько дополнительных аргументов make, которые могут передаваться во время компиляции. Некоторые из них обсуждаются здесь, но остальные используются внутри файла и на самом деле не имеют никакого значения или практической
15.4.2. Утилита make в разработке не на C/C++
15.4.2. Утилита make в разработке не на C/C++ Программа make может оказаться полезной не только для программ на C/C++. Языки сценариев, подобные описанным в главе 14, могут не требовать традиционных этапов компиляции и компоновки, однако часто существуют другие виды зависимостей, с
15.4.3. Правила make
15.4.3. Правила make Некоторые из наиболее интенсивно используемых правил в типичных make-файлах вообще не выражают зависимостей. Они позволяют связать небольшие процедуры, которые разработчик хочет механизировать, например, создание дистрибутивного пакета или удаление всех
15.4.4. Генерация make-файлов
15.4.4. Генерация make-файлов Одним из неочевидных преимуществ Unix make по сравнению с базами данных зависимостей, встроенных в многие IDE-среды, является то, что make-файлы представляют собой простые текстовые файлы, т.е. файлы, которые могут создаваться программами.В середине 1980-х
15.4.4.2. I make
15.4.4.2. Imake Утилита Imake была написана в попытке автоматизировать создание make-файлов для системы X Window. Она надстраивается на makedepend для решения как проблемы вывода зависимостей, так и проблемы переносимости.Imake-система эффективно заменяет традиционные make-файлы 1make-файлами,
15.8.1. Emacs и make
15.8.1. Emacs и make Например, утилиту make можно запустить из Emacs с помощью команды ESC-x compile [Enter], Данная команда запускает make(1) в текущем каталоге, собирая вывод в буфер Emacs.Сама по себе данная операция не была бы очень полезной, но Emacs-режим make распознает формат сообщений об ошибках
15.4.1. Базовая теория make
15.4.1. Базовая теория make При разработке программ на языках С или С++ важной частью для построения приложения является семейство команд компиляции и компоновки, необходимых для получения из файлов исходного кода работающих бинарных файлов. Ввод данных команд — длительная и
15.4.2. Утилита make в разработке не на C/C++
15.4.2. Утилита make в разработке не на C/C++ Программа make может оказаться полезной не только для программ на C/C++. Языки сценариев, подобные описанным в главе 14, могут не требовать традиционных этапов компиляции и компоновки, однако часто существуют другие виды зависимостей, с
15.4.3. Правила make
15.4.3. Правила make Некоторые из наиболее интенсивно используемых правил в типичных make-файлах вообще не выражают зависимостей. Они позволяют связать небольшие процедуры, которые разработчик хочет механизировать, например, создание дистрибутивного пакета или удаление всех
15.8.1. Emacs и make
15.8.1. Emacs и make Например, утилиту make можно запустить из Emacs с помощью команды ESC-x compile [Enter]. Данная команда запускает make(1) в текущем каталоге, собирая вывод в буфер Emacs.Сама по себе данная операция не была бы очень полезной, но Emacs-режим make распознает формат сообщений об ошибках
1.14. Получение GNU make
1.14. Получение GNU make ПроблемаВы хотите получить и установить утилиту GNU make, используемую для сборки библиотек и исполняемых файлов из исходного кода.РешениеРешение зависит от вашей операционной системы.WindowsХотя в некоторых источниках можно получить готовые бинарные