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