1

说我有这个: -

files := a.txt b.txt c.txt
$(files):
    ifeq ($@, a.txt)
        #do this
    else
        #do that
    endif

这似乎不起作用。有什么解决方法吗?

4

1 回答 1

1

正统的处理方式是:

files_a = a.txt
files_bc = b.txt c.txt

files = $(files_a) $(files_bc)

all: $(files)

$(files_a):
    do this

$(files_bc):
    do that

如果不同的文件需要不同的规则,则将它们单独分组。这样做的另一个优点是它不依赖于 GNUmake扩展。如果两组命令(“做这个”和“做那个”)之间有共同的操作,您可以将这些共同的操作编码为宏。

于 2013-10-26T15:46:34.467 回答