2016-06-20 5 views
0

У меня есть проект C++. В моей папке «Проект» у меня есть три папки подпроектов.makefile принять зависимость от всего файла в определенном каталоге

Proj_Folder 
    Include 
     head1.h 
     head2.h 
     .... 
    Sub_Proj1 
     proj1.cpp 
     makefile 
    Sub_Proj2 
     proj2.cpp 
     makefile 
    Sub_Proj3 
     proj3.cpp 
     makefile 
ShareAll.cpp 
makefile 

Это файл makefile в папке «Proj_Folder».

OBJS = ../ShareAll.o proj1.o 

proj1: ${OBJS} 
     ${CXX} ${CFLAGS} -o [email protected] $+ 

proj1.o : proj1.cpp 
     ${CXX} ${CFLAGS} -c $< -o [email protected] 

../ShareAll.o : ../ShareAll.cpp 
     ${CXX} ${CFLAGS} -c $< -o [email protected] 

Мне нужно включить все файлы заголовков, которые находятся в каталоге «Включить» в качестве зависимости для всего проекта.

Я пробовал этот ниже код.

C_HEADER_FILES := $(patsubst Include/*.h) 

# The dependency file names. 
DEPS := $(C_HEADER_FILES:.h=.d) 

# Let make read the dependency files and handle them. 
-include $(DEPS) 

Но он говорит,

makefile:30: *** insufficient number of arguments (1) to function `patsubst'. Stop. 

Как я могу включить все файлы заголовков, как зависимость в этом проекте Makefile?

+3

«Правильный» способ обращения с этим состоял бы в том, чтобы GCC генерировал файлы зависимостей с чем-то вроде «-MMD». – user657267

ответ

1

Вы используете неправильную функцию для сбора набора файлов .h. Вы должны использовать:

C_HEADER_FILES := $(wildcard Include/*.h)