2017-04-17 37 views
0

我正在做一個任務(但這不是大部分/肉的任務,真的),似乎我們被要求有在Assignment文件夾中的Makefile文件(目錄如下所示:〜/ CSC2001F/Assignment2/src,src被bin,doc,test等替換)Java Makefile與.java文件在src中,需要有.class

我有一個makefile,在src中,它將類文件放在那裏。我希望能夠從〜/ CSC2001F/Assignment2中使用src中的java文件創建,並讓類文件進入bin。我將如何做到這一點? 我目前的Makefile:

JAVAC=/usr/bin/javac 
.SUFFIXES: .java .class 
.java.class: 
    $(JAVAC) $< 

classes: BinaryTreeNode.class BinaryTree.class \ 
    BTQueueNode.class BTQueue.class \ 
    AVLTree.class PrintIt.class \ 
    SearchIt.java SearchAVL.java \ 

default: $(CLASSES) 

clean: 
    rm *.class 

回答

0

你不能做到這一點使用後綴規則,這是所有的在POSIX標準的補充提供。如果你只能使用標準make,那麼把東西放在不同目錄中的唯一方法就是爲它們寫明確的規則;例如:

bin/BinaryTreeNode.class: src/BinaryTreeNode.java 
     $(JAVAC) src/BinaryTreeNode.java 
bin/BinaryTree.class: src/BinaryTree.java 
     $(JAVAC) src/BinaryTree.java 

等。(不能使用$<與POSIX標準作出明確規定,無論是)。

如果你可以使用更強大的make,那麼它可能有更強大的隱式規則。例如,如果您使用GNU make,則可以使用模式規則而不是後綴規則,如下所示:

bin/%.class: src/%.java 
     $(JAVAC) $<