Заголовочный файл должен быть включен в список зависимостей.
При первом использовании make
для сборки программы он будет скомпилирован точно так же, независимо от того, включите ли вы myheader.h
в качестве зависимости или нет,Разница в том, что происходит, когда один из файлов изменяется.
Если вы снова запустите make
, ничего не меняя, он скажет, что «src» обновлен и ничего не скомпилирует.Однако если вы изменили myheader.h
, а не включили его в качестве зависимости, то make
скажет, что цель обновлена.Он не смотрит на исходный файл, чтобы увидеть, какие файлы он включает.Утилита make
ничего не знает о исходном коде на C или C ++ (или любом другом исходном коде).Он смотрит только на наличие изменений в указанных файлах, не просматривая их содержимое.
Если вы включите myheader.h
в качестве зависимости, если вы позже измените этот файл, тогда запуск make
будетперестройте программу.
Если вы хотите знать все несистемные заголовочные файлы, от которых зависит данный исходный файл, вы можете запустить gcc с опцией -MM
.Это выведет правило make со списком зависимостей заголовка исходного файла.
Например, если вы запустите gcc -MM src.c
, вы получите следующий вывод:
src.o: src.c myheader.h
Вы можетезатем включите это в свой make-файл.