ВУЗ:
Составители:
48
пуска препроцессора компилятор останавливает работу и генерации
объектных файлов не происходит.
• Ключ компиляции MM. Аналогичен ключу M, но в список за-
висимостей попадает только сам исходный файл и файлы, включаемые
с помощью директивы «#include "имя_файла"».
• Ключ компиляции MD. Аналогичен ключу M, но список зави-
симостей выдается не на стандартный выход, а записывается в отдель-
ный файл зависимостей. Имя этого файла формируется из имени исход-
ного файла путем замены его расширения на расширение «d». Напри-
мер, файл зависимостей для файла main.cpp будет называться main.d.
В отличие от ключа M компиляция проходит обычным образом, а не
прерывается после фазы запуска препроцессора.
• Ключ компиляции MMD. Аналогичен ключу -MD, но в список
зависимостей попадает только сам исходный файл, и файлы, включае-
мые с помощью директивы «#include "имя_файла"».
Как видно, компилятор может работать двумя способами – в одном
случае он выдает только список зависимостей и заканчивает работу
(опции M и MM). В другом случае компиляция происходит как обычно,
только в дополнении к объектному файлу генерируется еще и файл за-
висимостей (опции MD и MMD). Предпочтительней использовать вто-
рой вариант, т. к.
1) при изменении какого-либо из исходных файлов будет построен
заново лишь один соответствующий ему файл зависимостей;
2) построение файлов зависимостей происходит «параллельно» с
основной работой компилятора и практически не отражается на време-
ни компиляции.
Из двух возможных опций, MD и MMD, предпочтительней первая,
т. к. с помощью директивы «#include <имя_файла>» часто включаются
не только «стандартные» (например «#include <iostream.h>»), но и свои
собственные заголовочные файлы, которые могут иногда меняться (на-
пример, «#include «myclass.h»).
После того как файлы зависимостей сформированы, они имеют
расширение «d». Для того, чтобы сделать их доступными утилите make,
следует использовать директиву #include:
include $(wildcard *.d)
Следует обратить внимание на использование функции wildcard,
т. к. конструкция
include *.d
будет правильно работать только в том случае, если в каталоге будет
находиться хотя бы один файл с расширением «d». Если таких файлов
Страницы
- « первая
- ‹ предыдущая
- …
- 46
- 47
- 48
- 49
- 50
- …
- следующая ›
- последняя »