Java 中的 makefile
Makefile
是 make 实用程序在使用时需要的特殊格式文件。
当我们为一个大型项目编写程序时,我们可能需要手动编译每个程序,这可能很耗时,而这正是 makefile 可以使这项任务变得简单快捷的地方。
使用 Makefile
管理 Java 中的大型项目
Makefile 是一种通过编译和链接来管理大型项目文件的方法。一个简单的 makefile 包含变量和规则。
下面是创建规则的基本语法。
target... : prerequisites...
<TAB>command...
在上述语法中,target
是要生成的程序的名称。先决条件或依赖项是用于创建目标的文件。
我们在以 tab
开头的 command
中编写命令。我们可以在生成文件中使用变量来存储文本字符串,以消除命令和规则的重复使用。
编译包含多个文件的项目是一项耗时的任务,每当我们对文件进行任何更改时,我们都必须重复相同的命令。
每当有更改时,可以使用 makefile 来编译 Java 文件来节省这段时间。请注意,当单个文件中发生修改时,makefile 仅编译更改的文件,而不是编译每个文件。
在 Java 中使用 Makefile
的例子
我们有三个 Java 文件作为示例。第一个 Java 文件包含三个类,而这两个文件包含单个类。
为了编译所有文件,我们每次都需要使用 javac
命令,但我们使用 makefile 来编译这些文件。
在下面的 makefile 中,我们首先指定要使用的编译器 javac
,并将其存储在变量 JC
中。接下来,指定要使用的后缀。
现在我们使用上面学到的语法创建一个目标,.java.class
是目标,而 $(JC) $*.java
是创建目标要执行的命令。
我们创建另一个宏,其中包含我们要在执行 makefile 时编译的所有 Java 文件。Makefiles 只理解制表符空间,或者我们可以使用\
运算符来中断语句。
我们用 CLASSES
宏指定 default
目标。在下一条语句中,我们创建另一个目标 classes
,将包含 .java
的文件替换为 .class
并将其存储在 CLASSES
中。
最后一个目标是使用命令 $(RM) *.class
清理类文件。
JC =javac
.SUFFIXES:.java .class
.java.class:
$(JC) $*.java
CLASSES = \
JavaExample.java\
JavaExample2.java\
JavaExample3.java
default:CLASSES
classes:$(CLASSES:.java=.class)
clean:\
$(RM) *.class
要执行 makefile,我们在命令行中使用以下命令。
make -f makefile
这里,make
是实用命令,而 -f
是文件的参数,makefile
是我们的 makefile 的文件名。
当我们执行命令时,我们得到以下输出。
javac JavaExample.java
javac JavaExample2.java
javac JavaExample3.java
在此之后,当有更改时生成类文件,我们运行命令,
Java 示例类:
public class JavaExample {
public static void main(String args[]) {
Motorcycle motorcycle = new Motorcycle();
System.out.println(motorcycle.getClassName());
}
}
class Vehicle {
String getClassName() {
return "Vehicle Class";
}
}
class Motorcycle extends Vehicle {
String getClassName() {
return "Motorcycle Class Child of " + super.getClassName();
}
}
输出:
Motorcycle Class Child of Vehicle Class
Java 示例 2 类:
public class JavaExample2 {
public static void main(String[] args) {
System.out.println("Java Example 2");
}
}
输出:
Java Example 2
Java 示例 3 类:
public class JavaExample3 {
public static void main(String[] args) {
System.out.println("Java Example 3");
}
}
输出:
Java Example 3
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn