소스 Repository 폴더 구조

소스 Repository의 폴더는 아래와 같이 구성합니다.

	RepoName/
	│
	├─ Extern/
	│  ├ Baz/
	│  ├ Include/
	│  └ Lib/
	│
	├─ Src/
	│  ├ Include/
	│  ├ ModuleA/
	│  ├ ModuleB/
	│  └ ProjectName.sln
	│
	├─ Test/
	│  ├ TEST-PC/
	│  └ copy_all_files.bat
	│
	├─ Tool/
	│	├ build_project-name_for_swrepo.bat (legacy)
	│	├ ci_build.bat (legacy)
	│	└ save_project-name_for_swrepo.bat (legacy)
	│
	├─ .clang-format
	├─ .clang-tidy
	├─ .editorconfig
	├─ .gitignore
	├─ .gitlab-ci.yml
	└─ modgroup-spec.yaml
프로젝트 마다 변경되어야 할 부분은 굵은 이탤릭체로 표시하였습니다. 이 부분은 각 프로젝트에 맞게 변경하여 사용합니다.
Table 1. 소스 Repository 최상위 폴더
파일/폴더 설명

Extern/

외부 모듈을 포함하는 폴더

Src/

프로젝트 Repository 내에서 구현된 모듈을 포함하는 폴더

Test/

테스트를 위한 폴더

Tool/

Gitlab CI 구성 방법을 위한 폴더 (legacy)

.clang-format

코드 포맷팅을 위한 설정파일

.clang-tidy

코드 분석을 위한 설정파일

.editorconfig

코드 포맷팅을 위한 설정파일

.gitignore

Git에서 무시할 파일을 설정하는 파일

.gitlab-ci.yml

Gitlab CI 설정파일

modgroup-spec.yaml

모듈 설정 파일

Extern 폴더

Extern 폴더는 외부 모듈을 포함하며 모듈별 폴더, Include, Lib 폴더로 구성합니다.

	Extern/
	│
	│
	├── Baz/
	│   ├── Include/
	│   │   └── Baz/
	│   │      └── Qux.h
	│   └── Lib/
	│	    ├── Baz.lib
	│	    └── Baz.dll
	│
	├── Include/
	│   └── Foo/
	│       └── Bar.h
	│
	└── Lib/
	    ├── Foo.lib      (Windows 정적 또는 import 라이브러리)
	    └── Foo.dll      (Windows 실행 시 필요한 DLL)
Table 2. Extern 폴더
파일/폴더 설명

Baz

외부 모듈을 포함하는 폴더

Baz/Include/Baz/

외부 모듈의 헤더파일을 포함하는 폴더

Baz/Lib/

외부 모듈의 라이브러리 파일을 포함하는 폴더

Include/Baz

외부 모듈의 헤더파일을 포함하는 폴더

Lib/

외부 모듈의 라이브러리 파일을 포함하는 폴더

  • 외부 모듈은 모듈의 배포 형태에 따라 독립적인 폴더로 구성하거나 Include 폴더만 독립적으로 구성할 수 있습니다.

  • 프로젝트 Repository 외부에서 구현된 모듈을 사용할 때 아래 형식의 구문으로 헤더를 include 할 수 있도록 IDE를 설정합니다.

    #include <Foo/Bar.h>
    #include <Baz/Qux.h>

Src 폴더

Src 폴더는 프로젝트 Repository 내에서 구현된 모듈을 포함하며 모듈별 폴더와 Include 폴더로 구성합니다.

Table 3. Src 폴더
파일/폴더 설명

Include/

헤더파일을 포함하는 폴더

ModuleA/

이 Repostiroy에서 구현하는 A모듈 소스

ModuleB/

이 Repostiroy에서 구현하는 B모듈 소스

ProjectName.sln

Visual Studio 솔루션 파일

Test 폴더

Test 폴더는 테스트를 위한 폴더로, 테스트 환경에 따라 하위 폴더를 구성합니다.

Table 4. Test 폴더
파일/폴더 설명

TEST-PC/

시험지원 시스템용 구성 환경 저장 폴더

copy_all_files.bat

시험환경 생성 스크립트

Tool 폴더 (legacy)

Tool 폴더는 Gitlab 자동 빌드 및 저장 스크립트를 포함합니다.

Table 5. Tool 폴더
파일/폴더 설명

build_project-name_for_swrepo.bat

주요 실행파일 및 라이브러리를 빌드하는 스크립트

ci_build.bat

Gitlab에 의해 호출되는 빌드 스크릡트. 빌드환경 구성후 build_~.bat를 실행한다.

save_project-name_for_swrepo.bat

빌드한 결과물을 Gitlab용 폴더로 복사하는 스크립트

  • Command 창을 연 후, Repository 최상위 폴더에서 Tool\ci_build를 실행하면 주요 실행파일 및 라이브러리가 모두 빌드되어야 합니다.

C:\Work\RepoName> Tool\ci_build  [Enter]

비고

  1. Module 폴더가 많은 경우 Module 폴더를 그룹화하여 Module-Group/Module의 구조로 구성 할 수 있음

  2. 프로젝트 Repository 에서 구현된 모듈을 동일 Repository의 다른 모듈에서 사용할 때 아래 형식의 구문으로 헤더를 include 할 수 있도록 IDE를 설정합니다.

    #include "ModuleA/Feature.h"