GNU使得不识别后缀规则

时间:2015-06-12 20:59:34

标签: makefile gnu-make

我有一个GNU make makefile,其中定义了一些明确的后缀规则,这些规则不符合要求。

以下是makefile的相关部分:

#------------------------------------------------------------
# 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中定义:

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

然而,当make运行时,它无法找到足够的后缀规则来从.idl文件生成.hh文件(我定义的第一个后缀规则)

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

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:3)

对于任何在将来偶然发现这一点的人来说,我的错误当然是一个简单的错误。

.SUFFIXES是特殊的目标,而不是变量。因此,要附加到.SUFFIXES列表,请使用语法

.SUFFIXES: .list .of .suffixes 

.SUFFIXES = .list .of .suffixes