在Bash中,brace扩展就可以了。
$ echo client_win{,_throttle,_freq}.exe
client_win.exe client_win_throttle.exe client_win_freq.exe
在Makefile中:
$(addsuffix .exe,client_win $(addprefix client_win, _throttle _freq )):client_win.c def.h
client_win.exe:
$(CC_W) -o $@ $< -lws2_32
client_win_throttle.exe:
$(CC_W_REL) -DTHROTTLE -o $@ $< -lws2_32
client_win_freq.exe:
$(CC_W_REL) -DFREQ -o $@ $< -lws2_32
能否在Makefile中 client_win
融入 $(addprefix client_win,...)
?
类似这样的?
$(addprefix client_win, NOTHING _throttle _freq )
这并不容易,因为make不像shell,没有 "现有但长度为零的字符串 "的概念。 Make会展开一些东西,然后查看生成的字符串,如果它不包含任何字符,就好像它根本不存在一样。
你可以做这样的事情。
$(patsubst %,client_%.exe, win win_throttle win_freq)
去掉 "空 "的选项,在里面添加更多的字符。
或者你可以直接把 "空 "的写出来。
client-win.exe $(patsubst %,client_win_%.exe, throttle freq)