半通配符的make目标,带有.class的make命令,依赖于相应的.java文件

时间:2019-05-04 11:28:37

标签: makefile wildcard target

所以我要按照我的作业规则创建一个makefile。我们正在使用以下格式的Java文件:(vehicle).java,然后是(vehicle)Tester.java,其中(vehicle)被替换为不同的名称。

所以我完全迷失了两个问题。

  1. 为何时输入输入创建目标,然后依赖项就位于相应的.java文件中。但是,我不知道如何以不涉及我为每个(车辆).java文件编写这样的目标的方式进行此操作。我不知道该如何使用通配符方法。

  2. 这类似于一个输入对象,它是何时输入的目标,并且取决于相应的(vehicle)Tester.java和(vehicle).java文件。

我都迷失了这两个。

我尝试将%符号与.class一起使用,但是默认的make无效,从我的阅读中得知是因为。优先。除此之外,我只是迷路了。

但是,我确实制作了分别编译所有测试器文件和非测试器文件的目标。我也有一个清洁的目标。我将在下面显示所有代码,但是我的两个问题都没有了

'''

存储所有(车辆).java文件,过滤掉(车辆)Tester.java

个文件 all_java = $(过滤掉%Tester.java,$(通配符* .java))

将(vehicle).java文件转换为(vehicle).class文件,进行排序

vehicles_class = $(排序$(all_java:.java = .class))

将(vehicle).java文件转换为(vehicle)Tester.class文件,进行排序

test_class = $(排序$(all_java:.java = Tester.class))

默认目标,使用宏编译所有(车辆).java文件

车辆:$(vehicles_class)

使用宏编译目标(车辆)Tester.java文件

测试:$(test_class)

目标清理目录

.PHONY:干净 清洁:    rm -rf * .class

后缀规则

.SUFFIXES:.java .class .java.class:    javac $ < '''

因此,我已经有了(vehicle).java文件的默认目标,(vehicle)Tester.java文件的目标,并且可以进行所有工作。如我的测试所示,除非更新.java文件,否则这两个目标也无法再次编译

0 个答案:

没有答案