2012-05-24 3 views
1

우선, 기본/중간 레벨 메이크 파일을 작성하는 방법을 알고 있습니다. 내 C + + 프로젝트에서 나는 많은 것들을하는 makefile을 사용한다. . 가장 중요한 것은 자동으로 은 와일드 카드를 사용하여 모든 소스 파일 (항상 같은 폴더에 있음)을 감지하고이를 사용하여 모든 개체 파일의 이름 (및 위치)을 예측하고 적절하게 컴파일한다는 것입니다.Makefile로 스칼라 프로젝트 관리하기

최근 내 scala 프로젝트에서 동일한 효과를 얻으려고했지만 두 가지 장애물이 있습니다. 패키지에 속하는

  • Copilled 클래스 파일 하위 디렉토리 (com/me/mypack/을 같은) 내부에 저장됩니다. 은 타임 스탬프를 확인하기 위해이 파일을 찾아야 만합니다. (그리고 은 자동으로 수행하는 방법을 모릅니다.)
  • 일부 소스 파일 (예 : package object을 정의하는 파일) 은 다른 명명 표준을 사용하여 클래스 파일을 생성합니다. 다시 이 클래스 파일의 위치를 ​​알아야하고 을 자동으로 수행하는 방법을 모르겠습니다.

이것의 결과는 "문제"소스 파일이 이 (스칼라의 컴파일 시간을 오래 악화되어) 나는 make 실행할 때마다 다시 컴파일 있다는 것입니다. 나는 수동으로 예상되는 클래스 파일의 전체 목록을 작성하지 않고이를 해결하는 방법을 알고 싶습니다.

편집 추가 참고로: 나는 하위 디렉토리에 소스 파일을 배치하지 않도록하고 싶습니다. 여러 가지 이유로 같은 디렉터리에 모든 것을 보관하는 것이 좋습니다.

+2

[ "가지고있는 것이 모두 망치라면 모든 것이 못처럼 보입니다"] (http://en.wikipedia.org/wiki/Law_of_the_instrument) – paradigmatic

답변

9

Scala의 경우 sbt 또는 Maven을 사용해야합니다. 이들은 스칼라와 자바가 작동하는 방식을 위해 특별히 설계되었으며, 설치와 사용이 훨씬 쉽습니다. 또한 make보다 많은 기능을 제공합니다.

이 도구는 다양한 용도로 사용됩니다. 컴파일은 큰 것이지만 의존성 관리에도 중요합니다. 또한 sbt (및 Maven?)는 "증분 컴파일"을 수행하므로 변경된 클래스 만 다시 컴파일되므로 컴파일 속도가 빨라집니다.

나는 개인적으로 sbt를 사용하지만 나는 Maven을 선호하는 사람들을 알고있다.

관련 문제