Makefile:拆分命令选项的输入文件

时间:2013-04-04 12:49:53

标签: makefile gnu-make

我当前的项目包含一个makefile,其中包含规则(简化而没有依赖):

SOURCES : = "file1.txt file2.txt file3.txt" # and so on

assembled.txt:
    myprog -I $(SOURCES)

问题是myprog不想要单个值,而是希望:

myprog -I file1.txt -I file2.txt ...

如何在Makefile中处理?

2 个答案:

答案 0 :(得分:2)

又快又脏:

SOURCES := file1.txt file2.txt file3.txt

SOURCES := $(addprefix -I , $(SOURCES))

assembled.txt:
    myprog -I $(SOURCES)

稍微优雅一点:

SOURCES := file1.txt file2.txt file3.txt

assembled.txt:
    myprog $(foreach S, $(SOURCES),-I $(S))

答案 1 :(得分:1)

@Beta,

你的第一个例子(使用addprefix)有点偏。应该看起来像

SOURCES := file1.txt file2.txt file3.txt

assembled.txt:
    myprog $(addprefix -I , $(SOURCES))

我觉得它比你的foreach版本好一些。