2012-02-08 47 views
0

內我試圖解決與生成文件的問題。如果您看到下面的內容,我將在規則內設置SUBDIR的值,但它在到達下一行時未設置。我已經使用輸出警告驗證了subst命令是正確的,但似乎在執行上面的行之前生成了下一行的命令。這可能嗎?我究竟做錯了什麼?無法獲取使用變量我設置在規則

$(CppObj):$(OBJPATH)/%.$(OBJ_EXT): $(CPPPATH)/%.cpp 
@$(MKDIR) $(OBJPATH) 
@$(RM) [email protected] 
SUBDIR = $(subst $(OBJPATH),,$(@D)) 
$(CC) $(C++FLAGS) $(CCOMP_ONLY_FLAG) $< $(COBJ_NAME_FLAG)$(OBJPATH)$(SUBDIR)$(@F) 

回答

1

食譜實際上是shell命令。你不能在其中設置一個Make變量(當然,除了使用eval function)。

但將其設置外治和配方照常參考它,它不是一個問題:

SUBDIR = $(subst $(OBJPATH),,$(@D)) 

$(CppObj):$(OBJPATH)/%.$(OBJ_EXT): $(CPPPATH)/%.cpp 
    @$(MKDIR) $(OBJPATH) 
    @$(RM) [email protected] 
    $(CC) $(C++FLAGS) $(CCOMP_ONLY_FLAG) $< $(COBJ_NAME_FLAG)$(OBJPATH)$(SUBDIR)$(@F) 

這將正常工作儘可能SUBDIR是遞歸擴展變量,它只是事實上的宏。