【问题标题】:Troubles with makefilesmakefile 的问题
【发布时间】:2014-04-23 02:28:55
【问题描述】:

我有 4 个组件:

  • MainA
  • 主B
  • ImplA
  • ImplB

我的可执行文件应该是Bin1Bin2 - MainAMainB 分别使用ImplAImplB。我的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定义它吗?

标签: c++ ubuntu gcc makefile


【解决方案1】:

可能build 目录不存在。

【讨论】:

  • 您可以随时更改您的makefile 来创建它...但是您必须手动或在makefile 中进行。 Make 不会为你创建它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多