0

私のプロジェクトでは、ライブラリが必要です。使用可能にするには、jar ファイルを抽出する必要があります。このプロセスを自動化する Makefile を準備したいと思います。私はそれが正しいと思っていましたが、Javaファイルの変更に関係なくmakeは何もしません(CMDControl.classが存在する場合、そうでない場合は毎回jarファイルを抽出します)。

all : CMDControl.class

%.class : %.java
    javac $<

CMDControl.class : org/gjt/mm/mysql/Driver.class
    jar xf ../mysql-connector-java-5.1.22-bin.jar

clean :
    -rm *.class

jar ファイルは次のディレクトリで構成されます。 com META-INF org

Makefile の何が問題になっていますか?

私は試した

all : CMDControl
CMDControl : CMDControl.class

しかし、それも役に立ちませんでした。

4

1 に答える 1

0

問題は、jarファイルは何の前提条件でもないため、Makeはそれが変更されているかどうかを気にしないことです。

これでうまくいくはずです:

%.class : %.java
    javac $<

CMDControl.class : org/gjt/mm/mysql/Driver.class

org/gjt/mm/mysql/Driver.class: ../mysql-connector-java-5.1.22-bin.jar
    jar xf $<
    touch $@

(最後のコマンドは、の変更時刻を更新してorg/gjt/mm/mysql/Driver.class、Makeが最新であると信じるようにします。)

于 2013-02-22T16:45:16.343 に答える