2013-03-07 9 views
0

Я работаю над проектом с несколькими каталогами с моим makefile на один уровень выше всех. Когда я обновляю файлы и файлы кода и заголовков, а затем переделываю их, он говорит: «Ничего не нужно делать для« все ». Есть ли способ заставить make проверить все каталоги и, следовательно, понять, что некоторые компоненты необходимо переделать? Приветствия JackMakefile и файлы для обновления

+0

Задачи ваших целей Makefile зависят от всех исходных и заголовочных файлов, из которых они построены? Это именно то, что делает. –

ответ

2

Вы можете принудительно ввести подкаталоги каждый раз:

SUBDIRS = dir1 dir2 

.PHONY: all 
all: subdirs final_target 

.PHONY: subdirs 
subdirs: 
    for d in $(SUBDIRS); do $(MAKE) -C $$d; done 

.PHONY: final_target 
final_target: 
    echo "Do something here..." 

Эта схема, чтобы ввести все подкаталоги, на самом деле являются очень распространенным явлением.

+0

Не так ли, если бы у меня был отдельный make-файл в каждом поддире? На данный момент у меня есть только один файл. Также из любопытства, что делает команда .PHONY? Я видел, что раньше он использовался для «чистых» команд. Ура! – JMzance

+0

@JackMedley Ах, да, это правильно. Затем вам просто нужно перечислить все файлы во всех подкаталогах как зависимости, когда это необходимо. Точка '. PHONY' сообщает Make, что его зависимости не являются реальными файлами, поэтому они всегда« построены »при ссылках. –

Смежные вопросы