Makefile g++;无法为多个文件指定-c和-o
为什么我会出现这个错误,而patsubst没有显示用于编译的权限输出,我真的很困惑Makefile g++;无法为多个文件指定-c和-o,makefile,g++,Makefile,G++,为什么我会出现这个错误,而patsubst没有显示用于编译的权限输出,我真的很困惑-c和-o不应该在CFLAGS中。相反,在适当的情况下,这些应该直接出现在编译器命令行中 另外,$(LIBOBJS)目标不正确,您需要一个模式规则。您拥有的规则将期望一次编译器调用来构建所有对象;但实际上,每个对象需要调用编译器一次 而不是$(LIBOBJS):$(LIBSRCS)等。它可以是: CC=g++ CFLAGS=-c -o PROG=craps LIBSRCS=craps.cpp craps_game.
-c
和-o
不应该在CFLAGS
中。相反,在适当的情况下,这些应该直接出现在编译器命令行中
另外,$(LIBOBJS)
目标不正确,您需要一个模式规则。您拥有的规则将期望一次编译器调用来构建所有对象;但实际上,每个对象需要调用编译器一次
而不是$(LIBOBJS):$(LIBSRCS)
等。它可以是:
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)
%.o:%.cpp
$(CC)$(cxflags)-c-o$@$<
谢谢,但是为什么这一行在生成可执行文件之后不执行呢<代码>$(CC)$(LDFLAGS)-l$(LIBCRAPS)-o$(PROG)$(PROG).o
%.o : %.cpp
$(CC) $(CXXFLAGS) -c -o $@ $<