2013-03-16 64 views
0

我想在運行特定命令後包含另一個makefile,因爲第一個命令會生成該makefile。我想這推遲包含在make中

debug2: 
    cd bench/${BENCH}; verilator --cc top.v 
    include ${BENCH_DIR}/Vtop_classes.mk 

在這種情況下做出不識別包括命令並給出了一個錯誤「令:包括:命令未找到」

,如果我嘗試包括但選項卡,然後它包括前先前的命令被執行,因此產生沒有這樣的文件的錯誤

debug2: 
    cd bench/${BENCH}; verilator --cc top.v 
include ${BENCH_DIR}/Vtop_classes.mk 
+0

你想做什麼*在建築之後*包括'Vtop_classes.mk'?是否應該從頭開始? – Beta 2013-03-16 23:27:49

回答

0

加 - 前:-include ${BENCH_DIR}/Vtop_classes.mk

0
INCLUDED-FILES=MakeA MakeB 

-include $(INCLUDED-FILES) 
# alternatively use sinclude 
generate-makefile: 
    touch MakeA 
    touch MakeB 

clean: generate-makefile 
    if [ -a MakeA ]; then make clean-A; else echo "No file: MakeA. Run make again."; fi; 
    if [ -a MakeB ]; then make clean-B; else echo "No file: MakeB. Run make again."; fi; 

由於-include,GNU make不會報告錯誤。當make運行延期規則並且所包含的文件不存在時,shell會打印一條消息「再次運行make」。示例調用中的延遲規則再次進行,因此不會報告錯誤。

因爲-include不報告錯誤,所以make可以在第一次運行時運行生成規則。第二次運行時會解決依賴關係。