코드(C++, 헤더)파일이 텍스트로 포함되어씬느데, 해당 파일들이 언리얼 헤더 툴에 들어간다.
언리얼 헤더툴은 언리얼의 특정한 구문들을 모두 가져와서 더 많은 C++코드를 생성하는데 사용되는 툴이다.(언리얼 특정 구문, A, U, F, ~~~_API, GENERATED_BODY,...)
C++ 코드가 생성되면, 표준 C++ 컴파일 프로세스에 진입한다.
프로세스는 3단계로 나뉜다.
전처리 (Preprocessor)
모든 C++ 구문을 건드리지는 않고 해시 기호로 시작되는 지시어만 다룬다. (#include, #pragma, ...)
컴파일러(Compiler)
코드를 실행 가능한 바이너리로 변환하지만, 번역 단위로 알려진 독립적인 C++ 파일만 바이너리로 변환한다.
링커(Linker)
모든 파일들을 하나로 묶어 실행 가능한 파일(Executable)로 변환한다.
전처리 단계 : 전처리 지시어들이 처리되는 과정(#)
game.cpp + math.h -> game.i (.i = Intermediate 중간 파일)
컴파일 단계 : 독립적인 .i파일안에 존재하는 C++ 구문을 바이너리 데이터로 변환. (완전한 바이너리는 아님; 함수의 모양만 알뿐 함수를 구현하지 못함)
링커 단계 : obj파일에 대해 생성된 바이너리 데이터를 결합해 실제로 실행 가능한 완전한 실행파일을 생성.
컴파일 시간을 단축하기 위해 사용된다. 예를 들어, game.cpp만 수정했다면 전체에 대한 컴파일 프로세스를 수행할 필요 없이, 전처리 작업을 game.cpp, 컴파일러도 game.i에 대해서만 실행한 다음, math.obj파일을 재사용하면 된다.