2013-02-21 130 views
1

我到處尋找我不斷看到這是很有幫助的規則MOC的Makefile規則

moc_%.cpp: %.h 
    $(MOC) $(DEFINES) $(INCLUDES) $< -o [email protected] 

它不工作。 Makefile去

MOC:= /path/to/moc 

.PHONY clean: 
    rm moc_*.cpp 

moc: moc_file.cpp 

#moc_file.cpp: file.h # this works 
# $(MOC) $< -o [email protected] 

moc_%.cpp: %.h 
    $(MOC) $< -o [email protected] 

註釋行,取消註釋,但一般規則不起作用。它打印出No rule to make target 'moc_file.cpp', needed by 'moc'任何人都可以給出任何見解,爲什麼它沒有或我做錯了什麼?

+0

的一般規則爲我工作:相反,你希望他們申請將它們變成靜態模式規則與目標列表前綴來。你使用什麼版本的Make? – Beta 2013-02-21 16:53:04

+0

我有兩個版本,一個是3.81和3.82。兩者都不起作用。 – NebulaFox 2013-02-21 18:43:59

+0

你的makefile對我來說工作正常。該錯誤基本上意味着模式規則不適用:例如,如果file.h不存在。但是你說明確的規則是有效的,所以它必須存在。除了你發佈的內容之外,你的環境中還有別的東西。嘗試運行「make -rd」並查看輸出是否提供了任何見解。 – MadScientist 2013-02-22 12:49:17

回答

1

模式規則可能會或可能不會被make使用,取決於天氣或一天的時間(你能告訴我不喜歡它們嗎?)。

moc_file.cpp: moc_%.cpp: %.h 
    $(MOC) $< -o [email protected]