将所有文件依赖于特定目录的依赖



我有一个C 项目。在我的项目文件夹中,我有三个子项目文件夹。

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

这是" proj_folder"文件夹中的makefile。

OBJS =  ../ShareAll.o proj1.o
proj1: ${OBJS}
        ${CXX} ${CFLAGS} -o $@ $+
proj1.o : proj1.cpp
        ${CXX} ${CFLAGS} -c $< -o $@
../ShareAll.o : ../ShareAll.cpp
        ${CXX} ${CFLAGS} -c $< -o $@

我需要包含位于目录" Include"中的所有标题文件作为整个项目的依赖。

我尝试了以下代码。

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.

如何在此项目中包含所有标题文件作为依赖项?

您正在使用错误的函数来收集.H文件集。您需要使用:

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

最新更新