2015-06-12 66 views
0

我有一個GNU make makefile,它有一些明確的後綴規則,這些後綴規則定義了哪些make沒有遵守。GNU make不識別後綴規則

這裏是生成文件的相關部分:

#------------------------------------------------------------ 
# Suffixes 
#------------------------------------------------------------ 
C++_SUFFIX = cpp 
C_SUFFIX = c 
IDL_SUFFIX = idl 

但是,當運行make時,它未能找到足夠的後綴:

#------------------------------------------------------------ 
# Suffix Targets 
#------------------------------------------------------------ 
.SUFFIXES = .$(C++_SUFFIX) .$(C_SUFFIX) .$(IDL_SUFFIX) .hh .o 

.$(IDL_SUFFIX).hh: 
     @echo "TARGET : .$(IDL_SUFFIX).hh" 
     @echo "COMPILER : $(IDL)" 
     @echo "OPTIONS : $(IDL_COMPILE_OPTS)" 
     $(IDL) $(IDL_COMPILE_OPTS) $*.$(IDL_SUFFIX) 
     @echo "COMPILED : $*.hh $*C.$(C++_SUFFIX) $*S.$(C++_SUFFIX)" 

.$(C++_SUFFIX).o: 
     @echo "TARGET : .$(C++_SUFFIX).o" 
     @echo "COMPILER : $(C++)" 
     @echo "OPTIONS : $(C++_COMPILE_OPTS) $(NO_LINK_PHASE) -o $*.o" 
     $(C++) $(C++_COMPILE_OPTS) $(NO_LINK_PHASE) -o $*.o $*.$(C++_SUFFIX) 
     @echo "COMPILED : $*.o" 

.$(C_SUFFIX).o: 
     @echo "TARGET : .$(C_SUFFIX).o" 
     @echo "COMPILER : $(C)" 
     @echo "OPTIONS : $(C_COMPILE_OPTS) $(NO_LINK_PHASE) -o $*.o" 
     $(C) $(C_COMPILE_OPTS) $(NO_LINK_PHASE) -o $*.o $*.$(C_SUFFIX) 
     @echo "COMPILED : $*.o" 

後綴名先前在Makefile中定義從.idl文件製作.hh文件(我定義的第一個後綴規則)

Make: Don't know how to make /path/to/example/file.hh. Stop. 

任何幫助,將不勝感激。

+0

這斜線看起來我錯了......除非你有一個'/ file.idl'文件也在您的文件系統的根目錄中。 –

+0

只是一個例子。我寧願不發佈真正的道路。公司規則和所有。在與「file.hh」依賴關係相同的目錄中有一個「file.idl」,它是錯誤消息的來源。我會讓這條假路徑更加虛假。 –

+0

「make -d」報告關於在那裏的嘗試?你是否有使用後綴規則而不是模式規則的原因? –

回答

2

對於任何在將來遇到此事的人來說,我的錯誤當然是一個簡單的錯誤。

.SUFFIXES is special target,not variable。因此,要追加到您使用的語法.SUFFIXES名單

.SUFFIXES: .list .of .suffixes 

.SUFFIXES = .list .of .suffixes