Jump to content

сделать зависимостью

makedependent — это инструмент Unix, используемый для создания зависимостей исходных C. файлов Версия Microsoft Windows была доступна в 2002 году. [ 1 ] и последний раз обновлялся в 2007 году на UnxUtils . [ 2 ]

makedepend был разработан в рамках MIT проекта Project Athena . Он широко использовался при сборке X11 и вспомогательных пакетов, но с тех пор был вытеснен средствами генерации зависимостей различных компиляторов и теперь используется в основном как запасной вариант на случай худшего случая, например, depcomp и GNU Automake .

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

[ редактировать ]

makedepend вызывается со списком исходных файлов:

makedepend [options] foo.c bar.c ...

Однако чаще всего он вызывается как цель из make-файла , обычно под depend цель, такая, что make depend вызовет makedepend во всех исходных файлах проекта. Одним из таких примеров цели может быть следующее:

SRCS = file1.c file2.c ...
CFLAGS = -O -DHACK -I../foobar -xyz
depend:
        makedepend -- $(CFLAGS) -- $(SRCS)

обязательно При создании проектов на языке C для инкрементальной компиляции (и полезно для чистой компиляции) иметь возможность отслеживать зависимости между модулями компиляции . C выражает интерфейсы между модулями компиляции через файлы заголовков ; поэтому часто бывает необходимо перестроить модуль компиляции при изменении содержащегося в нем заголовка. make должен быть проинформирован об этих зависимостях.

makedepend решает эту проблему, анализируя код исходных файлов C для создания списка зависимостей (эти заголовочные файлы включены прямо или косвенно). Он способен понимать конструкции условной компиляции , чтобы не создавать чрезмерных зависимостей. Затем он добавляет в Makefile правила, выражающие зависимости.

Недостатки

[ редактировать ]

Большая часть современного исходного кода использует «условную компиляцию», чтобы контролировать, какую часть исходного кода следует использовать, на основе символов препроцессора C, определенных компилятором. Эти символы могут указывать имя или семейство компилятора, номер версии, операционную систему и размер слова. В зависимости от этих символов включенные файлы могут меняться. Однако makedependent сама по себе не является компилятором и не определяет таких символов, поэтому вывод может быть неверным. Кроме того, некоторый код намеренно выдает явную ошибку, если он не может распознать ни один поддерживаемый компилятор, и, таким образом, makedependent вообще не сможет его использовать.

Альтернативы

[ редактировать ]

Большинство современных компиляторов предоставляют флаг (часто -M), который использует собственный анализатор исходного кода компилятора для создания списка зависимостей. [ нужна ссылка ] . Это может быть предпочтительнее makedepend потому что это снижает вероятность того, что созданные зависимости будут противоречить собственному поведению компилятора.

Поскольку компиляторы принимают разные флаги для генерации зависимостей и могут вести себя по-разному при выводе информации о зависимостях, желательно использовать сценарий-оболочку, который может соответствующим образом вызывать компилятор (и возвращаться к makedepend при необходимости). Одним из популярных таких сценариев-оболочек является depcomp , который распространяется и используется GNU Automake . [ 3 ]

Solaris make включает поддержку отслеживания зависимостей, которая активируется путем указания «цели специальной функции». .KEEP_STATE. [ 4 ]

  1. ^ «Добавлена ​​зависимость от дистрибутива X11» . Архивировано из оригинала 9 февраля 2006 г. Проверено 17 сентября 2013 г.
  2. ^ Проект UnxUtils, размещенный на SourceForge.
  3. ^ Отслеживание зависимостей в Automake , Руководство Automake
  4. ^ Solaris make (1) Man-страница
[ редактировать ]


Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: b363472bea0694056559abed731d2a84__1645626900
URL1:https://arc.ask3.ru/arc/aa/b3/84/b363472bea0694056559abed731d2a84.html
Заголовок, (Title) документа по адресу, URL1:
makedepend - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)