2013-02-14 1 views
5

좋아,이 작업은 간단해야하지만, 이것을 이해하지 못하는 것 같습니다. ProjectA와 ProjectB라는 두 개의 프로젝트가 있습니다. ProjectB는 이전 프로젝트 인 ProjectA에 의존합니다. 이제는 ProjectB를 만들고 싶습니다. 이제 ProjectA의 디렉토리 구조를 변경하고 싶지 않습니다. 문제는, 나는 항상 ProjectA와 함께 -outputdir bin을 사용했다.GHC에서 별도의 프로젝트에 연결하기

는 PROJECTA이처럼 보였다 :

ProjectA/ 
    bin/ 
    (*.o, *.hi in proper paths, sometimes also *.p_o and *.p_hi) 
    Foo/ 
    ModuleX.hs 
    ModuleA.hs 
    ModuleB.hs 

가 지금은 자신의 별도의 -outputdir으로, ProjectB와 다른 폴더가 있습니다. ProjectA 파일을 다시 컴파일하지 않고 이전 프로젝트 객체 파일에 연결하기 만하면됩니다. 나는 아마 ProjectA를 cabalize 할 수 있다는 것을 알고 있지만, 더 간단한 방법은 없을까요?

+0

빌드 시스템이 필요합니다. 음부 (또는 메이크 파일)가 흔들리는 것을 좋아하지 않는 경우 (http://community.haskell.org/~ndm/shake/) – Jonke

+0

고마워요. 나는 쉐이크를 조사 할 것입니다.하지만 실제로 교체 할 필요는 없습니다. 사실, 나는 지금 당장은 매우 행복합니다. 문제는 GHC가 충분히 사용자 정의 할 수없는 것 같은 .o 및 .hi 파일을 검색하는 이상한 방법을 갖고있는 것입니다. 즉, -outputdir bin을 추가하면 ... bin에서 미리 컴파일 된 파일을 찾을 것이며 ProjectA/bin으로 변경하는 방법을 찾을 수 없습니다. – Samee

답변

2

"간단한 방법"은 카발을 사용하는 것입니다. Project A를 설치하면 실제로 실제로 다시 저장되는 위치를 걱정할 필요가 없습니다. GHC는 그것을 찾을 것입니다.

이 작업을 수행하지 않으려면 -i GHC로 전환하여 컴파일 된 항목을 검색 할 폴더를 지정하십시오.

http://www.haskell.org/ghc/docs/7.0.1/html/users_guide/separate-compilation.html

+0

게시하기 전에 이미 -i를 시도했습니다. ProjectA의 모든 것을 다시 컴파일한다는 점을 제외하고는 원하는 모든 것을 수행합니다. 나는 'gcc x.o y.o'와 유사한 것을 찾고 싶었다. – Samee

+0

그리고 Cabal의 경우는 작동하지만 2-3 프로젝트에만이 기능을 사용할 때 내 ~/.cabal 폴더에이 파일을 놓기를 원하지 않습니다. 나는 이것이 모든 프로젝트에 대한 나의 검색 경로에 있기를 원하지 않는다. – Samee

+1

흥미 롭습니다. 문서는'--make' 모드에서 지정된 디렉토리에있는 _source_ 파일들을 찾을 것이라고 주장하지만, 그렇지 않으면 인터페이스 (그리고 아마도 객체) 파일들을 찾을 것입니다. 물론, GHC 7 (?)'- make "모드가 이제는 기본값이기 때문에 이것을 끄는 방법을 모르겠습니다 ... – MathematicalOrchid

관련 문제