我正在为一个C类项目工作,其中链接和编译是通过makefile完成的(感谢上帝!)。
但在那之后,我仍然需要输入终端中的所有输入和输出文件名(argv [] stuff):
./proj c880.isc c880.vec c880.faults c880.out
我的(愚蠢)问题是:你能以某种方式准备你的makefile,这样我只需输入:
./proj 880
一切都得到了解决?当我不得不用不同数字的文件运行整个时间时,我讨厌它...
感谢您的时间。
答案 0 :(得分:2)
我认为我不太明白你在问什么。但你绝对可以写出这样的规则:
proj-%: proj
$< c$*.isc c$*.vec c$*.faults c$*.out
然后运行make proj-880
或make proj-900
或其他任何内容。
答案 1 :(得分: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与其他人分开处理;这说起来有点棘手,但这个想法的要点就是。