2012-01-18 2 views
2

여러 부분으로 구성된 대규모 C++ 프로젝트를 재구성하려고합니다. 이 부분의 일부와 고려해야 할 몇 가지 속성을 열거합니다.플러그인, dll 및 타사 도구가있는 대규모 C++ 프로젝트의 구조

  • BaseClasses, 이것은 개발자의 작은 분리 된 그룹으로 제한됩니다. 이것은 약 15 개의 DLL입니다.
  • MainProject, 이것은 모든 개발자를위한 오픈 소스입니다. 약 10 개의 DLL입니다.
  • 모든 Plugin-membergroup (모든 Plugin은 특별한 개발자 그룹 임) (현재 약 20 개의 Plugin-DLL)에 대해 열려있는 여러 Pluginprojects.
  • PDF Lib, Boost, (나중에 wxWidgets에서도 사용 가능), 일부 지오메트리 등 대부분의 소스는 대부분 원본과 동일하지만 일부는 그렇지 않습니다.

현재 MFC와 ATL이 거의없는 Windows OS (32Bit 만 해당)의 VisualStudio로 개발되었습니다. SVN 및 GIT로 버전이 지정되었습니다 (일부 타사 라이브러리의 경우 마지막 버전).

더 자세히 살펴 보려면 다중 플랫폼 응용 프로그램을 만들고 싶습니다. 장기적으로 이것은 다른 플랫폼에서 작동하고 크로스 플랫폼 툴 등을 사용해야합니다. 모든 부품에 대해 단일 빌드를 실행하면 매우 좋습니다. 어쩌면 CMake가 여기에서 도움이 될 수 있습니다.

저는 구조상 등등에 대해 많은 질문을했지만 올바른 대답을 찾을 수 없습니다. 또한 API 디자인이나 John Lakos "Large Scale .."과 같은 책들이 내 책꽂이에 있습니다. 또한 여러 오픈 소스 프로젝트를 살펴 보았습니다.

폴더 및 프로젝트 구조 및 이러한 응용 프로그램에 대한 종속성을 만드는 방법에 대한 권장 사항/경험/팁/설명서가 있습니까? 사전에

감사합니다, 호위

+1

GitHub: Sundry Framework 내 프로젝트를 볼 수있다. –

+1

나는 광범위한 질문에 대한 좋은 대답을 기대하지 않을 것이다. 그것을 나눠보십시오 (예 : "크로스 플랫폼 빌드", "대형 프로젝트 내에서 다른 소스 컨트롤을 효과적으로 다루는 방법", "대형 프로젝트의 디렉토리 구조"등 –

답변

2

글쎄, 난 당신이 소프트웨어 모듈로 분리 할 것을 권장합니다. 또한 동일한 것을 기반으로 디렉토리 구조를 만드십시오. 모든 프로젝트 종속성 (같은 -

  • /deps ... CMakeLists (또는 메이크), 라이센스 등을 포함 -

    • /가 :

      은 같을까요 CMake 모듈, 내장 라이브러리)

    • /docs-Doxygen Documentation
    • /include-"기본.
    • /소스 일부 모듈의 헤더 - - /가/MODULENAME을 포함 예를
    • 을위한 시간 "헤더 일반적인 소스 파일
    • /소스/MODULENAME - 특정 모듈 소스 파일
    • /플러그인-된 DLL의 플러그인 또는 뭔가

    글쎄, 나는 그것이 좋은 구조를 생각합니다. Qt, Boost, MongoDB 및 기타 대규모 프로젝트의 소스 코드를 검토하는 것이 좋습니다.

    또는 당신은 Qt는 영감의 원천이 될 수

  • +0

    나는 그것이 광범위한 질문이라는 것을 알고있다. 그러나 질문을 나누면 특정 과제에 대한 답변이 달라질 수 있습니다. 일부 과제는 전체 문제에 부합하지 않을 수 있습니다 (제 의견입니다). – howieh

    +0

    언급 된 프로젝트가 존재하지 않습니다. – lorefnon

    관련 문제