2015-11-02 51 views
1

我在cmd.exe上遇到GNU make問題。不知怎的,它忽略了dir的'/'輸出,並說沒有規則。GNU make忽略cmd.exe上的斜槓

$(foreach f,$(OBJS),$(eval $f : | $(dir $f))) 

%/: 
    mkdir -p [email protected] 

所以我做了這個骯髒的黑客。

$(foreach f,$(OBJS),$(eval $f : | $(dir $f)D)) 

%/D: 
    mkdir -p [email protected] 

任何更好的解決方案?請不要告訴我把破殼扔掉。我不使用shell,但其他人使用它。

回答

0

就我所知目標模式匹配與shell沒有任何關係make最終會用來運行配方目標。這完全是在內部完成的。

這就是說,確切的生成文件片段(使用OBJS := a/a.o b/b.o c/c.o)適用於我在CentOS 5上使3.81,3.88,4.0和4.1。(我沒有讓Windows測試。)所以也許有一些操作系統特定的涉及這裏。

您可以嘗試刪除/並僅使用%作爲目標?

這都說更好的解決方案可能是將目錄組件分配給一個變量並將該變量用作目標。

DIRS := 
$(foreach f,$(OBJS),$(eval $f : | $(dir $f)) $(eval DIRS += $(dir $f))) 

$(DIRS): 
    mkdir -p [email protected] 
+0

是的,它沒有'/'工作,但我更喜歡你的DIRS技巧。謝謝。 – 173210

相關問題