Java 为2种文件类型创建隐式规则
我的makefile中当前有以下隐式规则:Java 为2种文件类型创建隐式规则,java,makefile,sqlj,Java,Makefile,Sqlj,我的makefile中当前有以下隐式规则: .java.class: $(JAVAC) -classpath . $< .java.class: $(JAVAC)-类路径$< 我需要实现的不仅是在.java文件上使用此规则,而且还要在.sqlj文件上使用此规则 我需要这样的东西: (.java.sqlj).class: $(SQLJC) -classpath . $< # Assumes files are all in the current director
.java.class:
$(JAVAC) -classpath . $<
.java.class:
$(JAVAC)-类路径$<
我需要实现的不仅是在.java文件上使用此规则,而且还要在.sqlj文件上使用此规则
我需要这样的东西:
(.java.sqlj).class:
$(SQLJC) -classpath . $<
# Assumes files are all in the current directory.
FILES=$(wildcard *.java) $(wildcard *.sqlj)
tgt.class: $(FILES)
$(SQLJC) -classpath . $^
(.java.sqlj).类:
$(SQLJC)-类路径$<
原因是我的一个java文件和一个sqlj文件之间存在循环依赖关系,只有在一步编译.java文件和.sqlj文件时才能解决这个问题。
据我所知,sqlj转换器也可以编译.java文件,所以这应该没有问题。您不能使用它
你需要用这个
那么你会写信吗
%.class: %.java %.sqlj
$(SQLJC) -classpath . $<
我会那样做的
如果您需要同时将
.sqlj
和.java
文件传递到$(SQLJC)
,然后替换$谢谢您的回答,这会转换为%.class:A.sqlj B.java
还是%.class:A.sqlj A.java
?规则应该使用编译所有.java和.sqlj文件$(SQLJC)
一次性。所有.java
和.sqlj
文件?不仅仅是成对的.java
/.sqlj
文件?因为您的原始版本在.java.class
或您尝试的(.java.sqlj)中都没有做任何类似的事情.class
版本。是的,所有这些版本,我只是意识到我不知道makefiles是如何工作的。gmake会将匹配的每个文件分别传递给compile命令,对吗?make会按照您的指示执行。如果您给它一个后缀或模式规则,它会“单独”应用于文件(对于单独匹配后缀/模式的任何定义)。
# Assumes files are all in the current directory.
FILES=$(wildcard *.java) $(wildcard *.sqlj)
tgt.class: $(FILES)
$(SQLJC) -classpath . $^