CC=g++
CFLAGS=-c -o
PROG=craps
LIBSRCS=craps.cpp craps_game.cpp craps_helper.cpp craps_io.cpp
LIBOBJS=$(patsubst %.cpp, %.o, $(LIBSRCS))
LIBCRAPS=craps
CXXFLAGS=-I./ -fpic
LDFLAGS=-L./
all: $(PROG)
$(PROG): $(LIBOBJS)
$(CC) $(LDFLAGS) -l$(LIBCRAPS) -o $(PROG) $(PROG).o
$(LIBCRAPS): $(LIBOBJS)
$(CC) -shared -o lib$(LIBCRAPS).so $(LIBOBJS)
$(LIBOBJS): $(LIBSRCS)
$(CC) $(CXXFLAGS) $(CFLAGS) $(LIBSRCS) $(PROG).cpp
.PHONY: clean
clean:
rm -f *.o *.so $(PROG)
为什么我遇到该错误,并且patsubst没有显示编译的权限输出,真的很困惑
答案 0 :(得分:1)
-c
和-o
不应位于CFLAGS
中。相反,这些应该直接在适当的情况下在编译器命令行中发生。
此外,$(LIBOBJS)
目标不正确,您在那里需要一个模式规则。您拥有的规则将要求单个编译器调用来构建所有对象。但是实际上您需要为每个对象调用一次编译器。
代替$(LIBOBJS): $(LIBSRCS)
等,可能是:
%.o : %.cpp
$(CC) $(CXXFLAGS) -c -o $@ $<