0

我正在开发一个 C 类项目,其中链接和编译是通过 makefile 完成的(感谢上帝!)。

但在那之后,我仍然必须在终端中输入所有输入和输出文件名(argv[] 的东西),例如:

    ./proj c880.isc c880.vec c880.faults c880.out

我的(愚蠢的)问题是:你能以某种方式准备你的makefile,这样我只需要输入:

    ./proj 880

一切都得到照顾?当我不得不用不同数字的文件运行一大堆时间时,我讨厌它......

谢谢你的时间。

4

2 回答 2

2

我想我不太明白你在问什么。但是你绝对可以写出这样的规则:

proj-%: proj
        $< c$*.isc c$*.vec c$*.faults c$*.out

然后运行make proj-880make proj-900其他。

于 2013-11-06T05:34:54.017 回答
2

传统上,您会添加一个test目标(可能作为.PHONY目标):

.PHONY: test

test: proj
     ./proj c880.isc c880.vec c880.faults c880.out

您还可以将文件c880.isc列为依赖项。

你也可以参数化它:

TEST = c880
PROG = proj
TEST_ARGS = ${TEST}.isc ${TEST}.vec ${TEST}.faults ${TEST}.out

.PHONY: test

test: ${PROG} ${TEST_ARGS}
    ./${PROG} ${TEST_ARGS}

或者您可能需要将 `${TEST}.out 与其他人分开对待;说起来有点棘手,但这个想法的要点是站得住脚的。

于 2013-11-06T05:36:18.727 回答