当我的源代码文件位于不同的目录时,我一直在编写 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 时,它会给出未定义引用的错误。
请帮助我了解如何修改我的 makefile,以便我可以将所有头文件保存在一个目录中,比如 INCLUDE,并将我的源文件分布在不同的目录中。
谢谢 !!!