2010-12-29 3 views
0

커다란 프로젝트가 있습니다. 다른 언어와 컴파일러가 포함되어 있습니다. GNU make의 도움으로 빌드를 제작하고 있습니다.프로젝트 폴더 구조 : makefile 소스 코드도 있습니까?

프로젝트 폴더 구조는 다음과 같습니다

project 
    src 
     haxe   --Haxe source code 
     graphics  --Embeddable graphic resources 
     locale  --Locale-specific resources 
     chinese --Chinese language resources 
     english --Generic English resources 
    build 
     china   --Chinese market 
     debug  --Debugging/Testing for developer(s) 
     release --Release 
     europe  --European market 
     debug  -- ... 
     release -- ... 

모든 설정하고 '확인'실행에 의해 생성된다 구축합니다. 내가 결정할 수없는 것은이 makefile을 'src'디렉토리에도 넣어야한다는 것입니다. 필자는 필자가 손으로 작성한 원본 자료를 소스 코드로 생각합니다. (필자의 생각에 따르면, 필자는 다른 프로그램의 입력에 의해 생성되지 않았기 때문입니다.) 필자는 makefile을 직접 작성했습니다. 내가 이것을 고려한 또 다른 이유는 오직 'src'디렉토리가 Git 저장소이기 때문이다 - 나는 다른 것을 추적 할 필요가 없다. 모든 Makefile을 'src'에 넣을 수 있습니까?

답변

2

현재 build 디렉토리 구조에 무엇이 있습니까? 컴파일 된 출력입니까?

직관적으로 (그리고 내가 당신보다 매우 다른 개발 세계에서 오는 될 수 있으므로 "직관적으로"상대적인 용어이다) 나는 build 폴더가 src 폴더 인접 해 볼 때, 나는 프로그램의 소스 코드가 될 것으로 예상 후자와 스크립트/도구/etc. 전자에 있기 위해 그것을 구축해야했습니다. 스크립트 (이 경우 메이크 파일은 잠재적으로 다른 것들을 포함하기도하지만)는 여러분이 말한 것처럼 소스 코드이지만 프로그램의 소스는 아닙니다. 구별되는 것은 하나는 "만들어지는 것"이고 다른 하나는 "어떻게 만들어야 하는가"라는 것입니다.

정확하게 이해하면 src은 소스 컨트롤에 바인딩되어 있으며 build은 아닌가요? 그 상황에서 스크립트를 수용하기 위해 build (또는 builder 또는 building 또는 그 성격의 것)을 src 아래에 만들 것입니다. 약간의 직관력이 없어서 출력물을 만들기 전에 다른 폴더를 올라야하지만, 이미 가지고있는 리소스 폴더와 잘 어울려야합니다.

+0

'build' 디렉토리는 바이너리, 라이브러리, 런타임 자산 등의 소스 코드에서 생성 된 기계 제작 컨텐츠를 포함하고 있습니다. 실제로'src'는 프로그램의 소스 코드를 포함하고'build'는'make'가 그 디렉토리의 내용을 생성하는 데 사용하는 Makefile을 포함합니다. 'src'는 소스 제어 시스템 (git)에 바인딩되어 있습니다. 그러나 필자는 Makefile의 대부분이 손으로 작성되었으며 성공적인 빌드를 위해 필수적인 많은 정보를 포함하고 있기 때문에 Makefile이 소스 코드인지 궁금합니다. – amn

+0

@ amn : 그래서 당신의 메이크 파일은 현재 소스 제어하에 있지 않습니까? –

+0

@Tom 아니야. 나는 그 (것)들을 움직이는 것을 관조하고있는 이유의 한 부분이다. 나는 소스 코드도 버전 관리가 필요하다고 생각하지 않는다. 그리고 프로젝트가 성장하고 가치있는 정보가 포함될 때 makefile은 점점 더 복잡해집니다. 예를 들어 소스 코드의 전체 디렉토리에서 Adobe Flash SWF 파일을 작성하고 있습니다. 그러나 SWF 크기 (너비, 높이, 프레임 수)는 컴파일러에 대한 명령 줄 옵션으로 지정되므로 소스 코드의 일부가 아니지만 프로젝트를 구성하는 것으로도 틀립니다. – amn

1

표준 연습은 프로젝트를 빌드하는 src/디렉토리 외부에 Makefile을 만들고 src/디렉토리 내에 다른 Makefile이 개별 모듈을 빌드하는 것입니다. 즉, 귀하의 경우에는 Makefile을 src에만 보관하는 것으로 충분하다고 생각합니다. 이것이 적용되는지는 잘 모르겠지만, GNU autoconf 패키지를 보길 원할 것입니다. 이것은 정확히 이런 유형의 것에 사용됩니다.

관련 문제