Win32 API/기초

Win32 API 기초 : Unity Build

시플마 2024. 11. 23. 23:36

 

다양한 클래스를 만들면서 프로젝트의 규모를 키워가다 보면

점점 컴파일 속도가 느려지는 것을 체감할 수 있습니다.

 

현재 진행 중인 프로젝트도 코드가 얼마 없지만

확실히 처음보다는 느려진 게 느껴지죠.

 

컴파일 속도가 느려지는 이유는 '분할 구현' 때문이죠.

 

분할 구현을 위해 헤더를 통해 필요한 파일을 참조하고 있습니다.

이 파일들은 서로가 엮어 있기 때문에 참조한 헤더 파일이

또 다른 헤더 파일을 참조하는 형태이므로 하나씩 찾아가

컴파일 하다 보니 느려지는 것입니다.

 

그래서 클래스를 만들 때마다 생긴, 이 많은 Cpp 파일을

하나의 Cpp 파일로 모은 후, 이 하나의 Cpp 파일만 컴파일하여

컴파일 속도를 올릴 수 있습니다.

 

그 기능을 해 주는 것이 바로 Unity Build 입니다.

 

 


 

 

 

프로젝트 우클릭 - 속성 - 고급을 살펴보면,

 

위와 같이 "Unity(JUMBO) 빌드 사용"이라는 항목이 보입니다.

 

이를 '예'로 바꿔줍니다.

 

그러면 아래와 같이

 

C/C++ - Unity 빌드가 생깁니다.

 

Unity 빌드를 진행하면 Unity.cpp 파일이 생깁니다.

 

이 파일에는 해당 프로젝트에 존재하는 모든 Cpp 파일을

참조하게 되어 이 파일만 컴파일하여 속도를 올리고 

정상적으로 프로젝트를 실행할 수 있는 것이죠.

 

"Unity 파일의 최대 소스 수"를 통해 Unity.cpp 파일에

최대 몇 개의 Cpp 파일을 참조할 것인지 정할 수 있습니다.

 

프로젝트의 Cpp 파일이 10개를 넘어가면 

또 하나의 Unity.cpp 파일을 만들게 되죠.

 

만약 프로젝트의 Cpp 파일이 20개 존재한다고 했을 때,

기존에는 20개의 Cpp 파일을 하나씩 컴파일했다면

Unity 빌드를 통해 두 개의 Cpp로 묶고 두 개의 Cpp 파일만

컴파일하면 되는 것이죠.

 

 

또한 Unity 파일 디렉터리를 수정하여 Unity.cpp 파일을

어디에 생성할지 설정할 수 있습니다.

 

위 사진에서는 프로젝트가 있는 폴더에 

Unity라는 폴더를 만들고 그 안에 Unity.cpp 파일을 생성하도록

설정한 것입니다.

 

 

그리고 C/C++ - 일반으로 가서 

 

"다중 프로세서 컴파일" 항목을 '예'로 수정하여

더욱 빌드 속도를 올려줄 수 있습니다.

 

 

중요한 점은 C/C++ - 미리 컴파일된 헤더로 가서

 

"미리 컴파일된 헤더" 항목을 사용하지 않아야 정상적으로 작동한다는 것입니다.

 

미리 컴파일된 헤더를 사용하면 미리 컴파일된 헤더 파일 ( pch 파일 )을 컴파일 한 후, 

다른 cpp 파일은 컴파일된 pch 파일을 재사용하기만 함으로써 빌드 속도를 올립니다.

 

이때 pch를 참조하는 소스 파일을 독립적으로 컴파일하여 

결과를 재사용하는 방식이고, Unity 빌드는 모든 소스 파일을

하나로 병합하여 컴파일합니다. 컴파일 방식이 다르기 때문에

서로 충돌이 발생하는 것이죠.

 

그래서 기본적으로 Unity 빌드를 사용하려면

미리 컴파일된 헤더를 반드시 꺼주어야 합니다.

 

 

이렇게 모든 설정을 마치고 빌드를 해보면

확실히 빌드 속도가 빨라지는 것을 느낄 수 있습니다.

 


강의 출처 : https://www.youtube.com/watch?v=chfmZcB8Xgs&list=PL4SIC1d_ab-ZLg4TvAO5R4nqlJTyJXsPK&index=43