0

Java プロジェクトのメイクファイルを作成する必要があります。

私のプロジェクトは基本的なものです。私のメインファイルと他のいくつかのパッケージを含むパッケージ。

その種のプロジェクト用の適切なメイクファイルを作成するのを手伝ってくれる人はいますか?

4

1 に答える 1

0

申し訳ありませんが、テストしていないため、失敗する可能性があります...

実行可能なjarファイルを生成する必要があると仮定すると、次のように動作するはずですが、テストしていません。

以下の Makefile は、ソースが ./src の下にあり、中間ファイルに ./build を使用してもよいことを前提としています (クリーン ターゲットによって完全に削除されるため、注意してください)。

次に、「make」または「make jar」で jar ファイルを生成する必要があります。

  NAME=MyProject

  MAIN_CLASS=MyMainClass

  SRC_DIR=./src
  CLS_DIR=./build/classes
  MANIFEST_FILE=./build/META-INF.MF
  JAR_FILE=./$(NAME).jar

  SRC_FILES=$(shell find $(SRC_DIR) -iname "*.java")
  CLS_FILES=$(patsubst $(SRC_DIR)/%,$(CLS_DIR)/%,$(patsubst %.java,%.class,$(SRC_FILES)))

  .PHONY: jar run clean mrproper

  jar : $(JAR_FILE)

  run : $(JAR_FILE)
        java -jar $(JAR_FILE)

  $(JAR_FILE) : $(MANIFEST_FILE) $(CLS_FILES)
        jar cmf $< $@ $(CLS_DIR)    


  $(MANIFEST_FILE) :
        mkdir -p $(dir $@)
        echo Main-Class: $(MAIN_CLASS) > $@

  $(CLS_DIR) :
        mkdir -p $(CLS_DIR)

  $(CLS_DIR)/%.class : $(SRC_DIR)/%.java $(CLS_DIR)
        javac -d $(CLS_DIR) -sourcepath $(SRC_DIR) $<

  clean : 
        rm -Rf ./build

  mrproper : clean
        rm -f $(JAR_FILE) 

Make を実行するたびに、検索操作を実行してソース ファイルのリストを取得します。これにより、ファイルの数とファイル システムの速度に応じて遅延が発生する可能性があります。問題にすべきではありません。

2 つの patsubst は 1 つの patsubst に圧縮される可能性がありますが、念のため 2 つのステップで行いました。

また、このソリューションは各 Java クラスを個別にコンパイルすることに注意してください。これは非常にコストがかかる可能性があり、理想的には、すべての src java ファイルの名前を含むファイルを作成し、それを javac に渡すことによって、すべてを一度にコンパイルする別のターゲットを用意することをお勧めします。

于 2013-05-21T01:49:45.740 に答える