Makefile循环依赖关系被删除

时间:2014-01-24 04:50:59

标签: c++ linux makefile

我正在尝试为我的项目创建一个makefile,但在运行它时我收到一个错误 像:

make: Circular database.cpp <- database.cpp dependency dropped

make: database.cpp' is up to date.

这是我的Makefile:

HEADERFILES = $(wildcard *.h)
CPPFILES = $(wildcard *.cpp)
OBJFILES = $(patsubst %.cpp ,%.o ,$(wildcard *.cpp))
$(OBJFILES): $(CPPFILES) $(HEADERFILES)
    g++ -c -o $(OBJFILES) $(CPPFILES)
    ar rvs libdatabase.a $(OBJFILES) 

我只有一个.cpp.h文件。请有人纠正。

1 个答案:

答案 0 :(得分:3)

patsubst中有一个额外的空格阻止了正确的匹配,因此OBJFILES是“database.cpp”。您可以这样纠正:

OBJFILES = $(patsubst %.cpp,%.o ,$(wildcard *.cpp))

但是,当您向代码库添加第二个源文件时,仍然会留下一个makefile会严重失败。我建议你这样做:

$(OBJFILES): %.o : %.cpp $(HEADERFILES)
    g++ -c -o $@ $<
    ar rvs libdatabase.a $@
相关问题