【发布时间】:2017-02-14 09:04:28
【问题描述】:
我尝试使用存储在子目录中的生成对象来编译项目:
myproject:
|
src: .cpp, .cpp ...
|
release: .o, .o ...
这是 Makefile 的一部分:
SRC ?= src
OBJ_PATH = $(SRC)/Release
vpath %.o $(OBJ_PATH)
...
OBJS := $(addprefix $(OBJ_PATH)/,obj1.o obj2.o )
all: build
obj1.o: $(SRC)/Manager.cpp
$(EXEC) $(CC) $(INCLUDES) $(CCFLAGS) $(GNCD_FLGS) -c $(<) -o $(OBJ_PATH)/$@ #-o $@ -c $<
obj2.o: $(SRC)/Synth.cpp
$(EXEC) $(CC) $(INCLUDES) $(CCFLAGS) $(GNCD_FLGS) $(DEFS) -c $(<) -o $(OBJ_PATH)/$@ #-o $@ -c $<
myApp: obj1.o obj2.o
$(EXEC) $(CC) $(LDFLAGS) $(GNCD_FLGS) -o $@ $(OBJS) $+ $(LIBS)
$(EXEC) mkdir -p $(OBJ_PATH)/$(TRGT_ARCH)/$(TRGT_OS)/$(BLD_TP)
$(EXEC) cp $@ $(OBJ_PATH)/$(TRGT_ARCH)/$(TRGT_OS)/$(BLD_TP)
$(OBJECTS) : Stt.h
build: myApp
run: build
$(EXEC) ./myApp
..但我得到一个错误链接:
Could not open input file 'obj1.o'
Makefile:86: recipe for target 'myApp' failed
所以似乎在 src/Release 目录中找不到对象;
有什么想法吗?
谢谢
【问题讨论】:
-
是的,这听起来很有趣,但就我而言,我需要从项目源和外部库创建对象。所以我不确定让这个语法能够链接两个对象..
标签: makefile