【发布时间】:2014-04-23 02:28:55
【问题描述】:
我有 4 个组件:
- MainA
- 主B
- ImplA
- ImplB
我的可执行文件应该是Bin1 和Bin2 - MainA 和MainB 分别使用ImplA 和ImplB。我的makefile是:
CC=g++
CCOPTS=-g -w
OBJS = $(BINDIR)/MainA.o $(BINDIR)/MainB.o $(BINDIR)/ImplA.o $(BINDIR)/ImplB.o
TARGETS = $(BINDIR)/Bin1 $(BINDIR)/Bin2
BINDIR = build
all: $(TARGETS) $(OBJS)
clean:
rm -f $(TARGETS) $(OBJS)
.PHONY: all clean
$(BINDIR)/Bin1 : $(BINDIR)/MainA.o $(BINDIR)/ImplA.o
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
$(BINDIR)/Bin2 : $(BINDIR)/MainB.o $(BINDIR)/ImplB.o
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
$(BINDIR)/%.o: %.cpp
$(CC) -c $(CCOPTS) -o $@ $<
当我尝试做时,我得到:
g++ -c -g -w -o build/MainA.o MainA.cpp
Assembler messages:
Fatal error: can't create build/MainA.o: No such file or directory
make: *** [build/MainA.o] Error 1
我不明白什么?
【问题讨论】:
-
MainA.cpp是否存在且名称是否完全匹配(区分大小写)? -
是的,它们都在同一个文件夹中,名称完全匹配
-
另外,你可以使用
$(BINDIR)之前你实际上用BINDIR=build定义它吗?