2017-12-18 7 views
0

こんにちは私は私のC++プロジェクトを構築しようとしています。私は現在、作成したい.oファイルのすべての名前をリストするmakefileを持っています。それから私はディレクトリに接頭辞を付けてコンパイルするようにします。最後に、各オブジェクトファイルの作成とそれらのオブジェクトファイルからの実行ファイルの作成を処理する2つの基本規則があります。何らかの理由で、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] $< 

は、私はエラーを取得しています。オブジェクトファイルを構築するために使用できるルールが認識されないのはなぜですか?

+1

より簡単な方法は '$(vpath)'を使い、ソースディレクトリを明示的に指定しないことです。 – user0042

+2

ソースディレクトリ '/ home/epi/jfrye_xilinx/Cosimulation/SystemC/Xilinx/lib'に対応する.ccファイルがありますか? –

+0

いいえ、それが問題でした。私はそれがリストに目標ファイル名を見つけることができたとしても規則がないと不平を言うことに気付かなかった –

答えて

0

私はパターンルールのファンではありません。 いつ、どこに適用すれば、私の好みに少し不安です。 より良い代替IMHOはstatic pattern rulesです。 これらを使用するには、パターンルールの前に、それらのパターンが適用されるターゲットの接頭辞を付けるだけです。

ので

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cc 
    $(CXX) $(INC_DIR) $(LIB_DIR) $(LIB_TAGS) -c -o [email protected] $< 

は単に私はあなたのソースツリー、 を持っていないので、私は言うことができないが、私はは今、あなたに別のエラーを与える作る疑う

${ZYNC_OBJS}: $(OBJ_DIR)/%.o: $(SRC_DIR)/%.cc 
    $(CXX) $(INC_DIR) $(LIB_DIR) $(LIB_TAGS) -c -o [email protected] $< 

なり。 何かについては/home/epi/jfrye_xilinx/Cosimulation/SystemC/Xilinx/lib/zynq_demo.ccが不明かもしれない(???)。

関連する問題