ソースコードファイルが異なるディレクトリにあると、Makefileの作成に行き詰まります。
ディレクトリ構造は次のとおりです。
ソースファイル(.cc)がフォルダーFOLDER1とFOLDER2にあり、ヘッダーファイルがINCLUDEという名前のフォルダーにあります。私のmakefileはFOLDER1にあります。
program_NAME := myprogram
program_C_SRCS := $(wildcard *.cc)
program_C_OBJS := ${program_C_SRCS:.cc=.o}
program_OBJS := $(program_C_OBJS)
program_INCLUDE_DIRS := ../INCLUDE
program_LIBRARY_DIRS :=
program_LIBRARIES :=
CPPFLAGS += $(foreach includedir,$(program_INCLUDE_DIRS),-I$(includedir))
LDFLAGS += $(foreach librarydir,$(program_LIBRARY_DIRS),-L$(librarydir))
LDFLAGS += $(foreach library,$(program_LIBRARIES),-l$(library))
.PHONY: all clean distclean
all: $(program_NAME)
$(program_NAME): $(program_OBJS)
$(LINK.cc) $(program_OBJS) -o $(program_NAME)
clean:
@- $(RM) $(program_NAME)
@- $(RM) $(program_OBJS)
distclean: clean
ここで、すべてのソース(.cc)ファイルをFOLDER1に保持すると機能しますが、一部のファイルをFOLDER2に移動すると、未定義の参照のエラーが発生します。
すべてのヘッダーファイルをINCLUDEなどの1つのディレクトリに保持し、ソースファイルをさまざまなディレクトリに分散できるようにmakefileを変更する方法を理解するのを手伝ってください。
ありがとう !!!