2016-06-20 7 views
0

私はC++プロジェクトを持っています。私のプロジェクトフォルダには、3つのサブプロジェクトフォルダがあります。特定のディレクトリ内のすべてのファイルに依存するメークファイル

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 [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. 

がどのように私はこのプロジェクトのメイクファイルでの依存関係としてすべてのヘッダファイルをインクルードすることができ、言いましたか?

+3

これを処理する「正しい」方法は、GCCが '-MMD'のようなもので依存ファイルを生成させることです。 – user657267

答えて

1

誤った機能を使用して、一連の.hファイルを収集しています。

C_HEADER_FILES := $(wildcard Include/*.h) 
関連する問題