0
I持って、次のMakefile(無関係なものを無視するように減少):Makefileはすべてのものを毎回作成します
BUILD_DIR=./build
OBJS = \
$(BUILD_DIR)/main.o \
$(BUILD_DIR)/common.o \
...
roo: $(OBJS)
$(CXX) -o [email protected] $(OBJS) $(LFLAGS)
.PHONY: $(BUILD_DIR)
$(BUILD_DIR):
mkdir -p $(BUILD_DIR)/passes
$(BUILD_DIR)/%.o: src/%.cpp $(BUILD_DIR)
$(CXX) -o [email protected] -c $< $(CFLAGS)
ただし、すべてのオブジェクトファイルが毎回再コンパイルされ、でも私は直接[email protected]
を使用するために、ルールを以下のよと思いましたそれぞれの非偽のターゲットで
私はレシピではなくルールにサブディレクトリを適用しているので、これはthisと重複しているとは思わないが、間違っている可能性がありますか?ビルドディレクトリの依存関係を正しく追跡するにはどうすればよいですか?
ありがとう;完全に修正しました –
または 'create-dir:' PHONY-targetを作成することができます。このターゲットでは、 'mkdir -p $ {BUILD_DIR}/passes'を実行することができ、' $ {BUILD_DIR} /%。o'の依存関係は 'create-dir'となり、必要に応じて再利用することができます。 – uzsolt
テストを行うことに意味はありません。 'mdir -p'を実行するだけでもいいかもしれません。ディレクトリがすでに存在する場合は、それはno-opになります。 – MadScientist