Вопрос

В makefile у меня есть следующая строка:

helper.cpp: dtds.h

Что гарантирует, что helper.cpp перестраивается всякий раз, когда dtds.h изменяется.Однако я хочу, чтобы ВСЕ файлы в проекте были перестроены, если изменится любой из двух других заголовочных файлов, примерно такого рода:

*.cpp: h1.h h2.h

Очевидно, что это не сработает, но я не знаю правильного способа заставить nmake делать то, что я хочу.Кто-нибудь может помочь?Я не хочу вручную указывать, что каждый отдельный файл зависит от h1.h и h2.h.

Спасибо.(Я использую nmake, входящий в состав visual studio 2005.)

Это было полезно?

Решение 2

Спасибо за твою помощь, Кристоф.Я пытался:

.cpp.obj: h1.h h2.h

И получил полезное сообщение об ошибке:

makefile(58) : fatal error U1086: inference rule cannot have dependents

В итоге я решил эту проблему, составив список файлов, которые я хотел скомпилировать, а затем добавив зависимость ко всему списку.

files = file1.obj file2.obj file3.obj
$(files): h1.h h2.h

Другие советы

Попробуй

%.cpp : h1.h h2.h

Это работает в GNU make - понятия не имею, совместим ли nmake...

Редактировать: И кстати:разве это не должно быть

helper.o : dtds.h

%.o :  h1.h h2.h

В конце концов, вы же не хотите переделывать .cpp файл (как вы создаете исходный файл?), но перекомпилируйте...

Редактировать 2: Проверьте Ссылка На NMAKE.Согласно это, что - то вроде

.cpp.obj: h1.h h2.h

может сработать...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top