2009-10-19 4 views
0

학교용 C 프로그래밍을하고 있고, 내가 만든 라이브러리를 반복적으로 재사용하고 있음을 발견했습니다 (스택, 사용자 입력, 오류 처리 등).학교용 작업 공간/Make Makefile 작성

는 지금, 내 개인 SVN 디렉토리 구조는 다음과 같습니다

trunk/ 
|-- 2520 
| `-- assignments 
|  |-- A2 
|   |-- Makefile 
|   |-- README 
|   |-- calculator.c 
|   |-- calculatorlib.c 
|   `-- calculatorlib.h 
`-- libs 
    |-- misc 
    | |-- errorlib.c 
    | |-- errorlib.h 
    | |-- userinputlib.c 
    | `-- userinputlib.h 
    `-- stacks 
     |-- stacklib.c 
     `-- stacklib.h 

이 파일 (userinputlib 및 errorlib)의 일부

내가 분명한 이유에서 일을 거의 모든 프로젝트에 익숙해. 파일의 복사본을 관리하고 싶지 않고 두 개의 복사본을 확인하고 싶지 않기 때문에 파일을 복사하지 않고 프로젝트의 작업 공간 (2520/할당/A2)에이 파일을 포함 할 수 있기를 원합니다. SVN에서 같은 파일의.
많은 수작업 구성 (또는 하드 코딩 경로) 없이도 Makefile이 작동하도록 프로젝트 작업 영역에 라이브러리 파일을 갖고 싶습니다.

처음에는 심볼릭 링크 (SVN 및 타르 지원)에 대해 생각했지만 다른 디렉토리에 내 헤더가 있으면 할당을 컴파일 할 수없는 것으로 보입니다.

수동으로 각 헤더를 오브젝트 파일로 컴파일하고 최종 링크를 수행 할 수 있지만 Makefile에서 자동으로이를 수행하는 방법을 모르겠습니다.

내 환경 설정에 대한 도움이나 대안이 있으면 감사하겠습니다.

감사합니다.

편집 :은 내가 구글을 검색하고 gcc -MM을 사용하여 자동 의존성 생성을 (? 아마도 내가이 원하는) 설명하는 몇 페이지를 발견하고 난은 GNU를 통해 수동 확인 읽을 수 있지만 아무것도에서 뛰어하지 않았는지 얘기를 깜빡 했네요 나를.

답변

3

서브 버전의 externals 기능을 사용하면 libs 트리의 동적 복사본을 프로젝트의 하위 디렉토리로 연결할 수 있습니다.

하지만 결국에는 사본 (서브 버전 사본이므로 라이브러리 코드의 한 지점이 될 수 있습니다)을 사용하는 것이 더 좋을 수 있으므로 라이브러리 변경에 대해 걱정할 필요가 없습니다 기존 프로젝트를 수정하고 필요에 따라 변경 사항을 병합 할 수 있습니다.

+0

정확히 그 대답은 내 대답과 의사 소통하려고했는데, 당신의 생각은 좀 더 분명하다고 생각합니다. – timdev

1

왜 당신은 (svn) 당신의 프로젝트에 필요한 라이브러리를 복사하지 않겠습니까? 당신은 본질적으로 프로젝트에서 사용할 lib 디렉토리를 만들 것입니다. 라이브러리 코드에서 버그를 발견하면 해당 위치에서 수정하여 다시 커밋 할 수 있습니다. 포장을 풀면 수정 사항을 라이브러리의 트렁크 위치로 다시 병합 할 수 있습니다.