我在多個目錄中使用了一套常用的make規則。每個化妝也很簡單:如何在gnu中設置交叉目錄依賴關係make
BASEDIR:=../..
TARGET:=theTarget
include Makefile.include
除非重寫,我對源代碼中的默認值:
SRC:= $(wildcard *.cpp)
我們要建立一個目錄中的目標文件(不是源)所以:
OBJDIR:= ../obj
BARE:= $(foreach f,$(SRC),$(notdir $(f))
OBJ:= $(foreach o,$(BARE),$(OBJDIR)/$(o).o)
所以我有.o文件,但我需要每個人根據在.cpp 只要目錄被稱爲火的規則,這是很容易:
$(OBJDIR)/%.o: %.cpp
但是在一些目錄中,在子目錄中有任意分組的文件。我這周圍暫時得到通過硬編碼它們都在我的makefile中心:
$(OBJDIR)/%.o: a/%.cpp
build...
$(OBJDIR)/%.o: b/%.cpp
build...
但我想要做的是能如果可能的話在一個變量指定編譯目錄。有什麼辦法來建立依賴關係
$(OBJDIR)/x.o: a/x.cpp
$(OBJDIR)/y.o: a/y.cpp
和
$(OBJDIR)/z.o: b/z.cpp
,而無需手動不必列出的依賴?
對於這個問題,我也有相關文件(.D)
$(DEPDIR)/%.d: $(SRC)
我想基於無論是在源頭上建立依賴性。 例如: .deps/XD:A/x.cpp 克++ -MM -MT $(objdir)/ $(notdir $ @)$ < -o $(DEPDIR)/ $(notdir $ @)
有沒有簡單的方法來生成這些規則,而不寫入每個目錄?
這裏就是我上首先生成.d文件中的信息: http://mad-scientist.net/make/autodep.html#advanced
最終的目標是包括所有的.d文件,並有從文件中依賴樹自動生成。但這是最後一部分。我不知道如何使用.d文件。我只是將它們全部包括在內?
include $(DEPDIR)/%.d
不起作用。
我可以將它們放在一起: cat $(DEP)> $(DEPDIR)/ deps。INC
然後
include deps.inc
感謝您的包括$(DEPDIR)/ *。d – Dov 2010-11-16 19:38:14