当我的源代码文件跨越不同的目录时,我被困在编写Makefile中。为不同目录中的源文件编写生成文件
的目录结构如下:
我有我的源文件(.cc的)文件夹中的FOLDER1和FOLDER2和头文件中的文件夹命名包含。我的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那么它的工作原理,但在移动一些文件到文件夹2它给出的未定义引用错误。
请帮我理解如何修改我的makefile,以便我可以将我的所有头文件保存在一个目录中,说INCLUDE并将我的源文件分布在不同的目录中。
谢谢!
@Haatschii ....谢谢!它的工作现在。 – 2012-04-14 11:28:02
我还有一个疑问...如果我有2个头文件目录,说INCLUDE1和INCLUDE2。如果头文件存在于INCLUDE1和INCLUDE2中,它也应该从INCLUDE2中提取它,如果它不存在于INCLUDE2中,那么它应该从INCLUDE1本身中提取它。请帮助修改上面的make文件以获得这个 – 2012-04-14 11:44:16
编辑我的回答@KundanKumar – Haatschii 2012-04-14 12:00:35