首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >没有基于模式的对象文件生成规则

没有基于模式的对象文件生成规则
EN

Stack Overflow用户
提问于 2017-12-18 18:02:07
回答 1查看 407关注 0票数 0

你好,我正在尝试构建我的C++项目。我现在有一个makefile,它列出了我想要创建的所有.o文件的名称。然后,我将目录前缀在希望将它们编译到的位置。最后,我有两个基本规则,处理构建每个对象文件然后从这些对象文件生成可执行文件。无论出于什么原因,make都没有认识到这种模式。这是makefile

代码语言:javascript
运行
复制
CXX=g++
SRC_DIR=/home/epi/jfrye_xilinx/Cosimulation/SystemC/Xilinx/lib
INC_DIR=-I/home/epi/jfrye_xilinx/Cosimulation/SystemC/Xilinx/include
INC_DIR += -I/home/epi/jfrye_xilinx/SystemC/systemc-2.3.2/include

LIB_DIR=-L/home/epi/jfrye_xilinx/SystemC/system-2.3.2/lib-linux64
LIB_TAGS=-lsystemc

OBJ_DIR=/home/epi/jfrye_xilinx/Cosimulation/Adder_PL/obj

ZYNQ_DEMO=/home/epi/jfrye_xilinx/Cosimulation/Adder_PL/bin/zynq_demo
ZYNQMP_DEMO=/home/epi/jfrye_xilinx/Cosimulation/Adder_PL/bin/zynqmp_demo

OBJS+ = memory.o trace.o debugdev.o demo-dma.o xilinx-zynq.o xilinx-zynqmp.o
OBJS += safeio.o remote-port-proto.o remote-port-sk.o remote-port-tlm.o
OBJS += remote-port-tlm-memory-master.o remote-port-tlm-memory-slave.o
OBJS += remote-port-tlm-wires.o

_ZYNQ_OBJS=zynq_demo.o
_ZYNQMP_OBJS=zynqmp_demo.o

_ZYNQ_OBJS += $(OBJS)
_ZYNQMP_OBJS += $(OBJS)

ZYNQ_OBJS=$(addprefix $(OBJ_DIR)/, $(_ZYNQ_OBJS))
ZYNPMP_OBJS=$(addprefix $(OBJDIR)/, $(_ZYNQMP_OBJS))

$(info $(ZYNQ_OBJS))

all: $(ZYNQ_DEMO) $(ZYNQMP_DEMO)

$(ZYNQ_DEMO): $(ZYNQ_OBJS)

$(ZYNQMP_DEMO): $(ZYNQMP_OBJS)

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cc
    $(CXX) $(INC_DIR) $(LIB_DIR) $(LIB_TAGS) -c -o $@ $<

我发现了一个错误:

制作:*没有制定目标/home/epi/jfrye_xilinx/Cosimulation/Adder_PL/obj/zynq_demo.o', needed by/home/epi/jfrye_xilinx/Cosimulation/Adder_PL/bin/zynq_demo'.的规则停止播放。

第四条规则应该注意zynq_demo.o的正确性。为什么它不承认它可以用来构建对象文件的规则呢?

EN

回答 1

Stack Overflow用户

发布于 2017-12-29 15:44:03

我不是模式规则的粉丝。它们何时何地适用,对我的口味来说有点杂乱无章。另一种更好的选择是https://www.gnu.org/software/make/manual/make.html#Static-Pattern。要使用这些简单的前缀,您的模式规则要有应用这些模式的目标。

所以

代码语言:javascript
运行
复制
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cc
    $(CXX) $(INC_DIR) $(LIB_DIR) $(LIB_TAGS) -c -o $@ $<

简单地变成

代码语言:javascript
运行
复制
${ZYNC_OBJS}: $(OBJ_DIR)/%.o: $(SRC_DIR)/%.cc
    $(CXX) $(INC_DIR) $(LIB_DIR) $(LIB_TAGS) -c -o $@ $<

我无法判断,因为我没有您的源树,但我怀疑make现在会给您一个不同的错误。/home/epi/jfrye_xilinx/Cosimulation/SystemC/Xilinx/lib/zynq_demo.cc可能失踪了(?)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47874005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档