Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为2种文件类型创建隐式规则_Java_Makefile_Sqlj - Fatal编程技术网

Java 为2种文件类型创建隐式规则

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

我的makefile中当前有以下隐式规则:

.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 . $^