4

プロジェクトに 1 つのメイクファイルを作成します。

JFLAGS = -g
JC = javac
JVM= $(JAVA_HOME)/bin/java
.SUFFIXES: .java .class
.java.class: ; $(JC) $(JFLAGS) $*.java

 CLASSES = \
    Class1.java \
    Class2.java \
    Main.java

 MAIN = Main

 default: classes

 classes: $(CLASSES:.java=.class)

 run : classes $(JVM) $(MAIN).class

以下のコードは、Java クラスを実行してコンパイルしますが、実行コマンドを実行しません。メイク ファイルをファイナライズし、実行を実行しないでください。コードで間違っているのはなぜですか?

4

2 に答える 2

0

Make は、makefile の最初のターゲット (およびそのターゲットのすべての前提条件、それらのターゲットのすべての前提条件など) のみをビルドしようとします。別の、または複数の最上位ターゲット (または「ゴール ターゲット」) を選択するには) コマンドラインで指定できます: make run.

runターゲットをメイクファイルの最初のターゲットに移動すると、デフォルトで実行されます。

または、実行したい「最上位」ターゲットが複数ある場合は、それらを別のルールで収集できます。たとえば、上記では次のように使用できます。

default: classes run

長年の慣習により、このターゲットには名前が付けられallています (ただし、これは単なる慣例です)。

于 2013-09-18T18:30:51.093 に答える