は私のメイクです:ライン9と10でメイクファイルが期待どおりに動作しないのはなぜですか?ここで
SHELL = /bin/sh
CC=g++
CFLAGS=-I.
DEPS = settings.h
OBJ = settings.o tomato.o
EXDIR = $(ROOT_TOMATO)/bin
OBJDIR = $(ROOT_TOMATO)/obj
$(OBJDIR)/%.o: %.cpp $(DEPS)
$(CC) -c -o [email protected] $<
$(EXDIR)/tomato: $(OBJ)
$(CC) -o [email protected] $^ $(CFLAGS)
clean:
rm -f a.out *.o
all: tomato
、私はそれがオブジェクトファイルを作成し、OBJDIR
でそれらを置くために取得しようとしているが、それは代わりにカレントディレクトリにOBJファイルを置き、ROOT_TOMATO/src:
$(OBJDIR)/%.o: %.cpp $(DEPS)
$(CC) -c -o [email protected] $<
なぜ機能していないのかわかりません。おそらくもっと良い方法があるかもしれませんが、私はこの特定のケースで私のコードがなぜ機能しないのかを知りたいのです。
側の注意点として、メイクファイルが別のmakefileによって呼び出される:
あなたが$(EXDIR)/tomato
ため
$(EXDIR)/tomato: $(OBJ)
前提条件が、$(OBJDIR)/settings.o
と$(OBJDIR)/tomato.o
ではなく、単なるsettings.o
とtomato.o
言い
#Main makefile for project
#Get root compile directory
ROOT_TOMATO = $(shell pwd)
export ROOT_TOMATO
All:
$(MAKE) -C src
9行目と10行目に問題がある場合は、質問をする前に、makefileからEXDIRについて何かを削除する必要があります。あなたの例は最小限ではありません。あなたのメイクファイルには、あなたの質問には関係のないたくさんのゴミもあります。 -1の質問です。 – user31264