Все файлы .cpp зависят от двух файлов .h? - PullRequest
1 голос
/ 07 января 2009

В make-файле у меня есть следующая строка:

helper.cpp: dtds.h

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

*.cpp: h1.h h2.h

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

Спасибо. (Я использую nmake, включенный в Visual Studio 2005).

Ответы [ 2 ]

2 голосов
/ 07 января 2009

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

.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
2 голосов
/ 07 января 2009

Попробуйте

%.cpp : h1.h h2.h

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

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

helper.o : dtds.h

%.o :  h1.h h2.h

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

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

.cpp.obj: h1.h h2.h

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

...