如何向Makefile添加新文件类型?

时间:2016-07-01 16:51:39

标签: makefile ibm-midrange

我正在尝试使用GNU Make 4.0创建一个Makefile,但遇到了问题。这是在QP2TERM PASE环境中的IBM i 7.2版上。文件类型在此平台上是非标准的。每个源文件都以“.mbr”结尾;源代码类型可以通过包含该代码的目录名称来收集。所以C代码在目录QCSRC中,C头在目录H中,RPG代码在目录QRPGLESRC中。源代码被编译成模块,模块被合并到程序中。为简单起见,此测试仅尝试将一个源文件编译为模块。

all: file1.module

file1.module: file1.mbr
    system "(compile instruction here...)"

make all的结果是make: 1254-002 Cannot find a rule to create target file1.mbr from dependencies.因此,似乎Make没有意识到* .mbr是源文件。我如何告诉它以.mbr结尾的任何内容都是源文件?更好的是,我如何告诉它在目录QCSRC中以.mbr结尾的任何内容都是C源代码,在目录QRPGLESRC中以.mbr结尾的任何内容都是RPG源代码,所以我可以指定相关的编译指令?

我在定义.SUFFIXES方面取得了一些有限的成功,但Make手册说应该使用模式规则。我试了这个没有成功:

all: file1.module

%.module: qrpglesrc/%.mbr
    system "(compile instruction here...)"

但现在给出的错误是make: 1254-002 Cannot find a rule to create target file1.module from dependencies.

1 个答案:

答案 0 :(得分:0)

如果您的make计划是POSIX compatible,那么您可以使用.SUFFIXES特殊目标并设置合适的inference rules

例如,您可以使用(仅限伪)

.SUFFIXES: .suffix_used_to_create_mbr_files

.suffix_used_to_create_mbr_files:
    command-to-create-mbr-file