WinAPI 43 Unity Build

CJB_ny·2022년 9월 22일
0

WinAPI

목록 보기
44/79
post-thumbnail

오늘 배운거 👍👍👍

  • Unity Build의 개념

  • MS가 숨겨놓은 기능


컴파일 속도가 이제 많이 걸린다.

컴파일 시간을 줄이기 위해서

전방선언을 습관화 하자. => 헤더에서 다른 애들을 참조하게 하지말자.

왜냐하면은 헤더에서 헤더를 참조를 하면은, A 파일에서 필요한 기능은 A헤더에서만 선언되어있는 것들만 필요한데

그 A헤더가 B 헤더를 참조를 하면은 A파일에서 필요없는 B헤더의 선언 부분도 다 끌어다 쓰게된다.

이렇게되면 컴파일러가 연쇄적으로 중복적으로 확인해야할 것들이 많이 생긴다.

특정 파일을 확인을 하는데 "어? 이런 파일이 이런 헤더를 전방선언으로 알고있네?" 그러면 연관된 부분들을 확인을 해주어야한다.

이런 상황이 발생할 수 있기 때문에 최대한 헤더간의 참조를 피하고

'필요한 부분'만 최대한 참조를 하고, '전방선언'을 이용해서 넘어가자는 것이다.

그런데 이것도 규모가 커지다보면은 별 의미가 없다.

그래서 나온 방법중 하나가 컴퓨터가 여러대가 있을 경우,

컴퓨터 여러대를 동시에 사용해서 빌드를 해서 컴파일을 각자가 좀 나누어서 컴파일을한다.

그런데 1인 PC는???

빌드 속도를 극적으로 올릴려면 => 그 방법중 하나가 Unity Build가 있다.

Unity 엔진 아니다.

이 기능 생긴지 얼마 안됬다.

컴파일 속도가 느려지는 이유

분할 구현을 했기 때문이다.

헤더끼리 다 참조를 하기 때문에 시간이 걸리는 것이다.

그런데 분할 구현 왜하냐?

사람이 코드를 보기때문에 기능별로 구분을 해주어야 가독성이 좋기 때문에 '정리'해놓은 것이다.

보기에는 편한데 대신 빌드할때의 속도가 낮다는 점을 감안을 해야하는 것이다.

Unity Build의 아이디어

개발할 때의 이점은 그대로 하되, 빌드할 때의 속도를 올려준다.

main.cpp에 따 때려 박아 넣으면 끝이다.

cpp파일을 여러개의 클래스 단위로 나누어서 파일이 하나씩 나오는 식이였다.

이런 여러개의 cpp파일을 하나의 cpp파일에 다 몰아 넣으면

main.cpp만 보고 끝이 난다.

Unity Build

하나의 cpp파일에 합쳐서 빌드를 한다.

빌드 제외처리 하는 방법

vcproj 라는 파일이 있는데

프로젝트의 구성정보 속성정보를 나타내는 프로그램이다.

메모장으로 열면은 이런식으로 있는데

우리

솔루션창에 뜨는 파일들 다 나타내주고있는 것이다.

옆에다가 추가 속성인자를 넣어주면은 빌드 제외 처리 가능하다.

vs에서 직접 이런식으로 cpp파일 빌드제외 처리가 가능하지만 vcproj파일에서도 직접 제외처리가 가능하다는 것이다.

Unity Build 하는법

모든 cpp파일을 다 빌드 제외 처리를 해버리고 ( 임시 cpp파일을 만들어서)

main.cpp같은 파일에서

이런식으로 모든 cpp파일을 include해버리는 것이다.

#include == 전처리기 가 하는 역할이 뭐라했냐?

=> " " 안에있는 파일을 참조해 내파일에다가 싹다 복붙 하는 역할이라고 했었다.

그래서 main.cpp파일만 빌드를 하는 것이다.

그런데 하나의 cpp안에 들어가는 메모리 용량제한도있어서

빌드용 임시 cpp파일을 몇개를 만들어서 빌드를 해야한다.

ms에서 이 유니티 빌드 기능을 제공하는데 테스트 단계라 숨겨놨다.

그래서 아까 vcproj파일 메모장으로 열어서

이부분 복붙 해서 저장을 해주면은

프로젝트 -> 속성 ->

명령줄 밑에 활성화 된다.

이렇게 뜬다.

false로 바꾸면 또 사라진다.

솔루션안에 프로젝트가 있고 프로젝트 속성값을 추가한 것이다.

Unity Build 경로 ❗❗

여기서 특정 키워드를 사용해서 경로 지정가능한데

$(ProjectDir) 현재 프로젝트 경로 추적 가능

새로 생긴애들은 Unity라는 폴더 안에다가 집어 넣도록 하겠다.

그러면

우리 클라 프로젝트안에 cpp파일이 있는데 이곳에 Unity라는 폴더가 만들어져서

이 cpp들을 취합시킬 cpp파일이 만들어진다.

안에 값들은 이렇게 해주고 빌드를 해보도록 하자.

그리고

이부분 '예'로 바꾸어라.

또한 미리 컴파일된 헤더

사용으로 바꿔주도록 하자.

되기는 하는데 pch.h때문에 조금 다시 수정하도록 하자.

Unity Build할꺼라

이부분 사용안함으로 수정하자.

직접 들어가면이렇게 뜬다.

profile
https://cjbworld.tistory.com/ <- 이사중

0개의 댓글