2011-02-18 96 views
0

您好我有一個生成文件,我創建了每個.o表示爲另一個目錄的相對路徑,並且對本地目錄中的.cpp文件具有依賴關係。我對這個問題的理解是,我不能在規則定義中使用的功能所以規則:從文件名生成一個生成文件目標依賴關係

%的.o:%的.cpp

導致的先決條件的.cpp那就是在同一個目錄中.o這不是cpp實際所在的位置。例如:

../../Tmp/MyClass.o:../../Tmp/MyClass.cpp < ---%的.o的錯誤的,結果:%的.cpp

。 ./../Tmp/MyClass.o:MyClass.cpp < --- RIGHT,我如何以自動的方式做到這一點?

最後的輸出,這是又一個目錄,對的.o的依賴,使他們都必須從一開始就充滿相對路徑信息:

OBJS:= $(addprefix ../ .. /../Tmp/XCode/${PLATFORM}/${CONFIGURATION}/,$(addsuffix的.o,$(基名$ {SRCS})))

$ {OUTPUT}:$ {OBJS}; $ {AR} $ @ $ {OBJS}

謝謝!

回答

0

我認爲克里斯蒂的解決方案將工作,但這裏的另一種方式做同樣的事情:

# Here's how you do it: 
OBJS := $(addprefix ../../../Tmp/XCode/${PLATFORM}/${CONFIGURATION}/, $(addsuffix .o, $(basename ${SRCS}))) 

# Here's a slightly cleaner way: 
BASEPATH = ../../../Tmp/XCode/$(PLATFORM)/$(CONFIGURATION) 
OBJS := $(patsubst %.cc,$(BASEPATH)/%.o,$(SRCS)) 

# And here's the rule: 
$(OBJS): $(BASEPATH)/%.o: %.cc 
    whatever... 
0

這應該工作

../../Tmp/%.o: %.cpp 

或者使用一個變量

builddir := ../../Tmp 
$(builddir)/%.o: %.cpp 
+0

嗨克里斯蒂感謝您的迴應。不幸的是,這不起作用,因爲: – Corillian 2011-02-18 20:51:31