目录中有许多类似的文件:
answer1.c
answer2.c
answer3.c
能够运行:
# make s1
# ./answer1
目前我有:
s1:
gcc -Wall -ansi answer1.c -o answer1
s2:
gcc -Wall -ansi answer2.c -o answer2
等
我知道我可以将编译器和标志放在变量中,这样可以更容易地改变事物。但是,有没有办法(某种宏扩展)自动化,如:
#=1 2 3 4 5 6
s#:
gcc -Wall -ansi answer#.c -o answer#
甚至更好
#=range(7)
或者我会更好地使用脚本语言,也许是为了编写Makefile?
答案 0 :(得分:3)
我只使用3行makefile
:
CFLAGS = -Wall -ansi
all: answer1 answer2 answer3
有了它,您只需运行make
即可知道您希望它执行的操作:它将从answer1
创建程序answer1.c
,从answer2
创建程序answer2.c
{1}},以及来自answer3
的{{1}}计划。
要构建任何一个程序,只需说:
answer3.c
等
答案 1 :(得分:1)
您正在寻找pattern rules:
s%: answer%
answer%: answer%.c
gcc -Wall -ansi $< -o $@
问题make -p | less
(至少使用GNU make),您会发现make
已经内置了非常类似的规则。