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.
がどのように私はこのプロジェクトのメイクファイルでの依存関係としてすべてのヘッダファイルをインクルードすることができ、言いましたか?
これを処理する「正しい」方法は、GCCが '-MMD'のようなもので依存ファイルを生成させることです。 – user657267