Как правило, путь поиска содержит много записей, и если заголовочный файл не существует, неясно, какой префикс выбрать.
Инструмент сборки cook
поставляется с программой, c_incl
,который сканирует исходные файлы C на наличие директив #include
и может вести себя так, как вы хотите, с помощью команды, подобной c_incl -No_Cache -Absent_System_Mention -Iinclude -C
.Но этот инструмент довольно неясен.
Возможно, вместо этого лучше использовать немного менее темную функцию make GNU: предварительные условия только для заказа, как описано в Типы предпосылок .Вы бы перечислили сгенерированные заголовочные файлы (или другие выходные файлы Bison) как обязательные предварительные условия для всех правил, которые компилируют файлы C, так, чтобы они генерировались рано при первой сборке, но впоследствии не вызывали ненужных повторных сборок.При таком подходе вам не нужно создавать зависимости от файлов, которые еще не существуют.