저는 게임과 엔진에서 작업 중이며 둘 다 동시에 작업 중이므로 다음 (단순화 된) 디렉토리의 모든 프로젝트를 참조하는 솔루션 파일 하나가 있습니다. 구조 :Visual Studio 솔루션을 여러 (상호 의존적 인) 자식 저장소로 분리합니다.
Root
├───Engine
│ ├───Library1
│ ├───Library2
│ └───Library3
├───Game
│ ├───Game
│ ├───Tool1
│ └───Tool2
└───GlobalSolution.sln
빌드 프로세스는 모든 엔진 라이브러리를 컴파일하고 게임이 도구의 일부 비슷한 결과 정적 라이브러리에 링크되는 실행, 동안 하나의 정적 라이브러리로 연결합니다.
안타깝게도 엔진 자체가 실제로는 유용하지 않기 때문에 엔진과 하나의 저장소에 하나의 저장소가 있어야하지만 동일한 저장소에 모든 항목이 있습니다.하지만 자체적으로 컴파일 할 수는 있지만 자신의 저장소에서 호스팅 할 수 있어야하는 다른 게임을 만들고 싶을 수도 있습니다. 난 그냥 게임 솔루션의 라이브러리 경로에 $(SolutionDir)\..\Engine\Build\
을 추가하여 엔진 라이브러리를 참조해야하는 경우
Root
├───Engine
│ ├───Library1
│ ├───Library2
│ ├───Library3
│ └───EngineSpecificSolution.sln
├───GameA
│ ├───GameASpecifics
│ ├───ToolA1
│ ├───ToolA2
│ └───GameASpecificSolution.sln
└───GameB
├───GameBSpecifics
├───ToolB1
└───GameBSpecificSolution.sln
: 내가 가지고 올 수
유일한 구조는 다음과 같다. 불행히도, 하나의 VS 창에서 모든 것을 (엔진과 게임) 사용하는 편리함을 잃어 가고 있으며 별도의 창에서 코딩해야 할 것입니다. 그렇지 않습니까? 그리고 물론, 엔진을 변경할 때마다 VS가 모든 프로젝트를 한 번에 처리하도록하는 대신 게임 솔루션을 수동으로 컴파일해야합니다.
프로젝트를 여러 저장소로 적절하게 분리하고 가능한 한 편리하게 작업을 유지하는 방법에 대한 제안이 있습니까?
나는 이것을 전에 사용하지 않았지만 나는 오늘 저녁에 그것을 시험해보고 내가 성공했는지 여부를보고 할 것이다. 모든 것을 설정 한 후 GitHub에서'GameA' 저장소를 가져 오면 자동으로'Engine'도 가져올 것인가? 그렇지 않으면 이것은 단지 당신의 묘사에서 보입니다. 아주 좋습니다. –
서브 모듈을 사용하지 말고 다른 프로젝트에서 사용하는 너겟 패키지를 제작하고 게시하는 것을 권장합니다. – Philippe
이것에 대해 조금 읽은 후에, 제 3 자의 종속성에는 좋지만 자신의 프로젝트에는 적합하지 않은 것으로 나타났습니다. 엔진을 변경한다고 가정하면, 게임 리포지토리의 참조를 엔진의 최신 커밋으로 수동으로 업데이트해야하는데, 이는 약간 불편합니다. 필자의 경우 게임과 엔진 폴더를 분리하는 것이 타사 저장소보다 엔진을 더 자주 업데이트해야하는 경우보다 약간 우수한 것으로 보입니다. –