Makefile-将变量作为前缀应用于另一个变量的多个部分

Makefile-将变量作为前缀应用于另一个变量的多个部分,makefile,javac,Makefile,Javac,我有一个小java项目,我想使用makefile构建,代码在src/package…/*中。java,字节码应转到bin/package…/*.class 我的当前文件如下所示(简化): 它工作正常,做它应该做的事情,但必须有一种更优雅的方式来做到这一点。 例如,是否有方法将路径($(SRCDIR)和包名)作为前缀应用于所有类文件名,这样我就不必将路径分别放在每个类的前面 所有类都必须在一个javac调用中编译,因为它们之间存在循环依赖关系,所以为每个类使用自己的目标是行不通的: default

我有一个小java项目,我想使用makefile构建,代码在
src/package…/*中。java
,字节码应转到
bin/package…/*.class

我的当前文件如下所示(简化):

它工作正常,做它应该做的事情,但必须有一种更优雅的方式来做到这一点。
例如,是否有方法将路径(
$(SRCDIR)
和包名)作为前缀应用于所有类文件名,这样我就不必将路径分别放在每个类的前面

所有类都必须在一个javac调用中编译,因为它们之间存在循环依赖关系,所以为每个类使用自己的目标是行不通的:

default: $(CLASSES)
%.java:
    $(JC) $(JCFLAGS) $(SRCDIR)/$@
感谢您的帮助。

来自:

参数名称被视为一系列名称,用空格分隔;前缀用作一个单位。前缀的值在每个单独名称的前面加上前缀,结果较大的名称之间用单个空格连接。比如说,

生成结果“src/foo src/bar”

default: $(CLASSES)
%.java:
    $(JC) $(JCFLAGS) $(SRCDIR)/$@
$(addprefix prefix,names...)
$(addprefix src/,foo bar)