Использование g++ с -MMD в make-файле для автоматического создания зависимостей

Я знаю, что в следующем make-файле предварительный -процессор будет автоматически генерировать зависимости (в файлах.d )и включать их в make-файл (, потому что так сказано в моих примечаниях к курсу ), так что они не должны автоматически поддерживаться. За это отвечает флаг -MMD. Чего я не понимаю, так это :В какой момент создаются файлы.d? Нет даже команды, в которой используется ${CXXFLAGS}. Предположительно, команды типа ${CXX} ${CXXFLAGS} -c x.C -o x.oбудут автоматически выведены make для каждого из объектных файлов, но если это команды, которые генерируют файлы.d, разве мы уже не прошли точку, когда зная зависимости xo, yo и z.o могли бы иметь значение, если бы мы знали их, только выполняя команды, которые генерируют эти файлы.o? (Скажем, есть файлы.h, которые makefile проигнорирует, если оставить правила для самостоятельного вывода или что-то в этом роде.)

CXX = g++                     # compiler
CXXFLAGS = -g -Wall -MMD      # compiler flags
OBJECTS = x.o y.o z.o         # object files forming executable
DEPENDS = ${OBJECTS:.o=.d}    # substitutes ".o" with ".d"
EXEC = a.out                  # executable name

${EXEC} : ${OBJECTS}          # link step
    ${CXX} ${OBJECTS} -o ${EXEC}

-include ${DEPENDS}           # copies files x.d, y.d, z.d (if they exist)
15
задан Nancy 7 August 2012 в 23:09
поделиться