간만에 개발하려다보니 까먹은게 많아서 확실히 해두기 위해 엔진 소스중 중요한 내용을 먼저 메모하고 나중에 정리해서 엔진설명을 할까한다. 한너울 엔진 1.0 다시 뜯어고치는중....
#define WIN32_LEAN_AND_MEAN
이라고 적혀있는것을 오픈소스들을 보면 심심치 않게 볼 수 있다. 예전에 써놓고 까먹고있기도 했고 그당시 잘 모르고 넘어가서 조사를 해봤다. 아래 사이트 맨 마지막을 보면 나와있다.
https://docs.microsoft.com/en-us/windows/win32/winprog/using-the-windows-headers
- Define WIN32_LEAN_AND_MEAN to exclude APIs such as Cryptography, DDE, RPC, Shell, and Windows Sockets.
최근 UWP니 .net WPF니 하면서 잘 안배우려는 사람들이 늘고있지만 WIN32 API는 여전히 많이 사용되고 있다. WIN32만 잘해도 아직도 많이 인정받는걸 보면 위에 나온거처럼 WIN32_LEAN_AND_MEAN 옵션을 이용해서 빌드타임 최적화를 하는것도 좋은 방법이라고 생각한다.
WIN32로 프로그래밍을 할 때 #include <windows.h> 전에 '#define WIN32_LEAN_AND_MEAN' 한줄을 작성을 하면 된다. 그러면 <windows.h>의 경우 win32 api들과 관련된 헤더들을 모아주는 역할을 한다고 알고있는데 여기서 암호화나 DDE, RPC, Shell, Windows Socket 과 관련된 기능을 로드하지 않는다. 컴파일러들이 요즘 똑똑해져서 Optimize 버전에서 실행시간이나 프로그램 용량차이가 크진 않겠지만 관련 헤더들을 include하지 않도록 줄여준다면 빌드타임을 효과적으로 줄일 수 있다. 게임을 만들면서 위의 기능들을 굳이 win32 API들을 사용할 이유가 없기 때문에 Hanneoul Engine에서는 생략하고 넘어간다.
크게 줄지는 않지만 티끌모아 태산이라고 조금씩이라도 초반에 미리 줄일 수 있는것들은 줄이고 시작하는게 좋다고 생각된다. C++이 인터프리터 언어가 아닌 이상 프로젝트가 무거워질수록 빌드 타이밍이 길어질꺼고 결국 고통스러운건 개발자일테니 미리미리 줄여두자.