2013-05-21 2 views
0

Java 프로젝트 용 메이크 파일을 만들어야합니다.올바른 Java makefile을 만드는 방법은 무엇입니까?

내 프로젝트는 기본 프로젝트입니다. 내 주 파일과 다른 패키지를 포함하는 패키지.

그런 종류의 프로젝트에 적절한 메이크 파일을 만들 수있는 사람이 있습니까? 당신이 필요로하는 무엇을 실행 항아리가 작동해야 다음 파일을 생성하는 것입니다하지만 난 그것을 테스트하지 않은 것으로 가정은 실패 할 가능성이 그래서 내가 테스트하지 않았습니다 죄송합니다

+0

[this] (http://www.cs.swarthmore.edu/~newhall/unixhelp/javamakefiles.html)를 찾고 계십니까? – Smit

+0

나는 그 질문이 모호하다고 생각한다. 너 무슨 짓을 한거야? –

+3

_make_가되어야합니까? [ant] (http://ant.apache.org/)를 사용할 수 있습니까? –

답변

0

...

.

아래의 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 $< [email protected] $(CLS_DIR)  


    $(MANIFEST_FILE) : 
     mkdir -p $(dir [email protected]) 
     echo Main-Class: $(MAIN_CLASS) > [email protected] 

    $(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) 

은 소스 파일의 목록을 얻으려면 찾기 작업을 수행하면 확인 실행할 때마다, 그 얼마나 많은 파일과 얼마나 빨리 파일 시스템은에 따라 약간의 지연이 발생할 수 있습니다 ....하지만 당신은 말했다 is는 작은 프로젝트이므로 문제가되지 않아야합니다.

이중 patsubst는 단 하나로 압축 될 수도 있지만 두 단계로 수행됩니다.

또한이 솔루션은 각 Java 클래스를 개별적으로 컴파일합니다. 이것은 꽤 비쌀 수 있으며 모든 src java 파일의 이름을 포함하는 파일을 만들어 javac에 전달함으로써 이상적으로 모든 것을 한 번에 컴파일 할 다른 대상을 갖는 것이 좋습니다.

관련 문제