2012-02-08 3 views
0

メークファイルの問題を解決しようとしています。以下に表示されている場合は、ルール内でSUBDIRの値を設定していますが、次の行に到達すると設定されません。 substコマンドが出力警告を使って正しいことを確認しましたが、上記の行が実行される前に次の行のコマンドが生成されているようです。これは可能ですか?私は間違って何をしていますか?makeを使用できません。ルールの内部に変数Iを設定しました。

$(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

実際にはレシピはシェルコマンドです。それらの中に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として正常に動作しますが、再帰的に変数を展開している、それは実際には単なるマクロです。

関連する問題