gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 11:15:14 24 4
gpt4 key购买 nike

我有一个小型 Java 项目,我想使用 makefile 构建,代码在 src/package... /*.java 中, 字节码应该转到 bin/package.../*.class .
我当前的文件看起来像这样(简化):

JC = javac
SRCDIR = src
BINDIR = bin
JCFLAGS = -d $(BINDIR)/

CLASSES = $(SRCDIR)/package/class1.java $(SRCDIR)/package/class2.java $(SRCDIR)/package/class3.java

default:
$(JC) $(JCFLAGS) $(CLASSES)

它可以工作并做它应该做的事情,但必须有一种更优雅的方式来做到这一点。
例如,有没有办法将路径( $(SRCDIR) 和包名)作为所有类文件名的前缀,所以我不必将路径单独放在每个类的前面?

所有类都必须在一个 javac 调用中编译,因为它们中有循环依赖,所以为每个类使用自己的目标是行不通的:
default: $(CLASSES)
%.java:
$(JC) $(JCFLAGS) $(SRCDIR)/$@

谢谢你的帮助。

最佳答案

来自 GNU make manual :

$(addprefix prefix,names...)

The argument names is regarded as a series of names, separated by whitespace; prefix is used as a unit. The value of prefix is prepended to the front of each individual name and the resulting larger names are concatenated with single spaces between them. For example,


$(addprefix src/,foo bar)

produces the result ‘src/foo src/bar’.

关于Makefile - 将变量作为前缀应用于另一个变量的多个部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5288942/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com