문제

그래서 저는 몇 년 동안 Java를 해왔지만 지금은 C ++ 프로젝트를 시작했습니다. 상기 프로젝트를 설정하기위한 모범 사례를 결정하려고합니다.

프로젝트 내에서 일반적으로 코드를 어떻게 구성합니까? 네임 스페이스 폴더로 Java 스타일을하고 소스를 그런 식으로 분해합니까? 쉽게 참조 할 수 있도록 공개 헤더를 포함 디렉토리에 보관합니까?

나는 언급 된 다른 방식과 다른 방식을 보았지만 큰 프로젝트를위한 좋은 방법은 무엇입니까?

또한 애플리케이션 구조의 리소스/폴더를 어떻게 처리합니까? 최종 프로젝트가 log 로그를 저장하기위한 폴더, 아마도 a lib 라이브러리 파일 용 폴더, 아마도 a data 데이터 용 폴더이지만 프로젝트 내에서 이러한 비트를 어떻게 관리합니까? 솔루션을 구축 할 때 구조를 구축 할 수있는 방법이 있습니까? 또는 단순히 빌드 구성 폴더 (디버그, 릴리스 등)로 이동하여 파일 구조를 수동으로 구성하여 EXE 파일을 찾을 것으로 예상되는 경로를 제대로 배치해야합니까?

도움이 되었습니까?

해결책

각 구성 요소를 하나 이상의 프로젝트 (또는 하위 구성 요소)와 테스트 프로젝트를 포함하는 솔루션으로 만드는 경향이 있습니다. 테스트 프로젝트에는 모든 단위 테스트가 포함되어 있습니다.

그런 다음 모듈과 구성 요소를 기반으로 솔루션을 트리로 정렬합니다.

//depot/MyProject/ASubSystem/AComponentOfTheSubSystem/ASubComponentWithAVSSolution

그런 다음 솔루션에는 여러 Visual Studio 프로젝트가 포함됩니다.

//depot/MyProject/ASubSystem/AComponentOfTheSubSystem/ASubComponentWithAVSSolution/Something
//depot/MyProject/ASubSystem/AComponentOfTheSubSystem/ASubComponentWithAVSSolution/SomethingElse
//depot/MyProject/ASubSystem/AComponentOfTheSubSystem/ASubComponentWithAVSSolution/TestTheSolution

구성 요소/하위 구성 요소의 수에 따라 나무에 깊이가 더 높을 수 있습니다. 또한 서브 시스템에서 "일반적인"솔루션과 일반 재사용 가능한 물건을 갖춘 서브 구성 요소 레벨을 갖는 경향이 있습니다.

그런 다음 서브 시스템을 구축하기 위해 모든 것을 하나로 묶는 서브 시스템 레벨 솔루션이 있습니다.

"포함"디렉토리로 사용하거나 내보내지 않습니다. 우리는 샌드 박스 내에 Visual Studio를 빌드하고 연결하도록합니다. 실수로 잘못된 라이브러리를 연결하지 않도록 별도의 "릴리스"샌드 박스가 있습니다.

다른 팁

관련이 있지만 다른 질문이 있습니다. 여기 또한. 나는 nmake를 진술하지만 실제로는 모든 빌드 시스템입니다 : Scons, Bakefile, Nmake, Ant, Vcproj

내가 일반적으로 내 코드를 구성하는 방식은 응용 프로그램 또는 DLL 내의 "모듈"에 의한 것입니다. 나는 네임 스페이스를 사용하는 경향이 없었지만 그렇다고해서는 안된다는 의미는 아닙니다.

IDE 안에는 다음과 같은 것이 있습니다.

/solution
   /prj1
      /headers
        /module1
        /module2
      /resource
      /source
        /module 1
        /module 2
      /test
   /prj2
      /headers
        /module1
        /module2
      /resource
      /source
        /module 1
        /module 2
      /test

파일 시스템에는 다음과 같은 것이 있습니다.

/solution
    /prj1
       /bin
       /build
       /include
          /module1
          /module2
       /lib
       /res
       /src
          /module1
          /module2
       /test
    /prj2
       /bin
       /build
       /include
          /module1
          /module2
       /lib
       /res
       /src
          /module1
          /module2
       /test
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top