2012-07-16 67 views
0
$(BUILDDIR)/%.check: $(SRCDIR)/%.c 
     $(eval pragma := $(shell grep "pragma" $<)) 
     @echo $<: $(pragma) 

$(編譯)變量始終是一個空字符串,即使是含有的#pragma的Makefile殼的grep

什麼是錯誤的文件?

回答

1

有幾件事情是錯誤的。

1)您正在將Make語法放入命令中,該命令應該在shell語法中。

2)您正試圖在一個命令中設置一個變量,並在另一個命令中使用它(因爲每個命令都在其自己的子shell中運行,所以這不起作用)。

3)你已經嘗試了一個複雜的命令,而沒有測試它的簡單組件(它會告訴你有什麼錯誤)。

如果你想要做的是顯示#pragma線,這將做到這一點:

$(BUILDDIR)/%.check: $(SRCDIR)/%.c 
    @echo $<: `grep "pragma" $<` 

如果你想要做的事與線條更加複雜,告訴我們它是什麼,我們會看到如果我們能幫忙。

+0

我需要停止並顯示包含#pragma文件的錯誤消息 – user1528805 2012-07-16 13:44:26

+1

那麼'if grep -q pragma $ <然後回顯「發現雜注!」;假;其他:; fi' – 2012-07-16 13:54:00

+0

@NormanGray,你打敗了我。 – Beta 2012-07-16 15:40:42