안녕하세요 저는 C++ 프로젝트를 빌드하려고합니다. 나는 현재 만들고 싶은 .o 파일의 모든 이름을 나열하는 makefile을 가지고있다. 그런 다음 내가 컴파일되도록 디렉토리에 접두사를 붙입니다. 마지막으로 각 객체 파일을 작성한 다음 해당 객체 파일에서 실행 파일을 만드는 두 가지 기본 규칙이 있습니다. 어떤 이유로 든 make는 패턴을 인식하지 못합니다.패턴을 기반으로 오브젝트 파일을 만드는 규칙이 없습니다.
make: *** No rule to make target
/home/epi/jfrye_xilinx/Cosimulation/Adder_PL/obj/zynq_demo.o', needed by
/home/epi/jfrye_xilinx/Cosimulation/Adder_PL/bin/zynq_demo'. Stop.
네 번째 규칙은 zynq_demo.o 올바른 처리를해야 다음은 메이크
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 [email protected] $<
내가 오류를 얻고있다에게 있습니다. 객체 파일을 빌드하는 데 사용할 수있는 규칙을 인식하지 못하는 이유는 무엇입니까?
더 쉬운 방법은'$ (vpath)'를 사용하고 소스 디렉토리를 명시 적으로 지정하지 않는 것입니다. – user0042
소스 디렉토리'/ home/epi/jfrye_xilinx/Cosimulation/SystemC/Xilinx/lib'에 해당 .cc 파일이 있습니까? –
아니요, 그게 문제였습니다. 목록에서 목표 파일 이름을 찾을 수있을지라도 규칙이 없다는 것에 대해 불평 할 것이라는 것을 알지 못했습니다. –