[언리얼 엔진] IWYU(Include-What-You-Use) 모델 설명

2024. 9. 25. 17:09·프로그래밍/언리얼엔진
목차
  1. 1. IWYU 모델이란
  2. 2. IWYU 모델 사용 시 규칙
어두운 배경이 싫으시다면 페이지 우측 하단에 보이는 초승달 모양의 아이콘을 클릭하면 화이트모드로 변경됩니다.
초승달 모양 버튼 : 화이트/다크 모드 전환
테마모드 변경 가이드

 

1. IWYU 모델이란

언리얼 엔진은 4.16부터 IWYU 모델을 사용하여 코드 컴파일을 최적화하였습니다. 과거에는 Engine.h 또는 UnrealEd.h와 같은 모놀리식(하나의 큰 덩어리) 헤더 파일을 포함하여 한꺼번에 컴파일을 하다보니 개발할 때 컴파일 시간이 너무 많이 소요되고 병목현상이 발생하였습니다. 그래서 4.16부터 컴파일 속도를 최소화하는 목적으로 등장한 것이 IWYU 모델입니다.

 

IWYU는 Include-What-You-Use, 해석하면 '너가 원하는 것만 포함'하라는 의미입니다. 과거에는 Engine.h 혹은 EngineMinimal.h 등을 프로젝트 모듈 헤더에 추가한 뒤 해당 모듈 헤더를 각각 새로 추가한 클래스 소스(cpp파일)에 추가하여 사용하는 식이어서 별도의 엔진 헤더를 추가할 필요 없이 바로 사용할 수 있었습니다.

 

하지만 IWYU 모델을 사용하게 되면 각각 새로 생성한 클래스 헤더에 CoreMinimal.h를 추가하여 최소한의 코드만 클래스에 Include하여 사용하고, 이 외의 코드는 cpp 소스파일에 하나씩 추가하고, 헤더에 선언할 때에는 전방선언(class StaticMeshComponent;)으로 작업합니다.

 

이렇게 하면 코드 최적화도 되고, 컴파일 속도도 빠르게 수행할 수 있지만 단점은 내가 사용하고자 하는 헤더파일이 어디 있는지 언리얼 API 문서를 통해서 하나하나 확인해야 하기 때문에 잘 모르는 초보자들은 찾기가 어려울 수 있습니다.

 

그래서 초보자들은 우선 블루프린트를 사용하여 엔진에서 사용하는 클래스들이 무엇이 있는지 먼저 파악하고 C++로 변환하는 작업을 해보는 게 도움이 됩니다.

 

과거 하나의 헤더에 모든 참조 헤더들을 담아서 사용하다보니 컴파일 시간이 매우 늘어났다.IWYU 정책에 따른 CoreMinimal 헤더의 모습. 딱 필요한 것만 정의하고 나머지는 필요시 소스파일에 헤더를 포함하여 사용하도록 한다.
엔진 소스의 헤더를 모두 참조하던 방식(좌측)과 최소한의 필요한 정의만을 포함하는 헤더(우측)

 

IWYU 모델을 사용하여 작업하다보면 간혹 IWYU 정책에 따라서 제대로 코드를 작성해도 빨간 줄(에러) 표시를 해줄 때가 있습니다. 실제 빌드할 때 영향을 주지 않는 경우에는 Intellisense의 오작동이므로 관련된 내용은 언리얼 엔진의 Visual Studio 설정 관련한 Document를 참고해 주시면 됩니다.

 

🔸언리얼 엔진 Visual Studio 구성 링크


 

2. IWYU 모델 사용 시 규칙

모든 헤더 파일에는 필수 종속성이 포함된다.

→ 새로 추가한 클래스 헤더에는 항상 CoreMinimal.h가 포함되어야 합니다.

 

.cpp 파일은 자신과 일치하는 .h 파일을 먼저 포함한다.

→ 예를 들면 Test.cpp의 가장 최상단에는 Test.h가 Include 되어야 합니다. 그 위에 다른 엔진 소스를 Include하면 빌드 시 오류가 발생합니다.

 

PCH 파일은 더 이상 명시적으로 포함되지 않는다.

→ 제대로 사용해 본 적이 없다 보니 자세한 정보는 모르겠지만 현시점에서 PCH 파일은 여전히 사용은 하지만 UnrealBuildTool(UBT)에 의해서 컴파일러 명령 줄에 강제 포함된다고 합니다.

 

모놀리식 헤더 파일은 더 이상 포함되지 않는다.

→ Engine.h 또는 UnrealEd.h와 같은 헤더는 더 이상 사용하지 않는다. 사용할 경우 경고를 출력한다.

 

※ 참고로 Engine/Engine.h 헤더는 전혀 다른 헤더이다. 주로 GEngine, UEngine을 사용할 때 사용한다.

ex) #include "Engine/Engine.h"

 

위의 규칙을 준수하면서 IWYU를 사용하도록 설정하기 위해서는 Build.cs 파일에 PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; 가 추가되어야 합니다.

(최신 언리얼 엔진 버전에서는 C++ 프로젝트 생성 시 기본적으로 추가되어 있음.)

 

이상 언리얼 엔진의 IWYU 정책 모델에 관한 설명이었습니다.


구독 및 좋아요는 컨텐츠를 생산하는데 많은 도움이 됩니다. 😊

감사합니다.

저작자표시 비영리 변경금지 (새창열림)
  1. 1. IWYU 모델이란
  2. 2. IWYU 모델 사용 시 규칙
'프로그래밍/언리얼엔진' 카테고리의 다른 글
  • [언리얼 엔진] 플러그인 생성 및 사용 방법 - 02. 플러그인 모듈 분리작업
  • [언리얼 엔진] 플러그인 생성 및 사용 방법 - 01. 플러그인 생성하기
  • [언리얼 엔진] 프로젝트 구조 및 용량 최적화
  • [언리얼 엔진] Unity(엔진X, 빌드방식) 빌드 옵션
RightNowHJ
RightNowHJ
온갖 잡다한 IT 관련 지식 모아모아 공유하는 블로그 (옛 LeePorter 블로그 이전)
잡식성 개발자의 블로그온갖 잡다한 IT 관련 지식 모아모아 공유하는 블로그 (옛 LeePorter 블로그 이전)
  • RightNowHJ
    잡식성 개발자의 블로그
    RightNowHJ
  • 전체
    오늘
    어제
    • 분류 전체보기 (67)
      • IT 활동 (44)
        • 티스토리 (16)
        • 소프트웨어 (13)
        • AI (15)
      • 프로그래밍 (12)
        • 언리얼엔진 (9)
        • C++ (3)
      • 일상생활 (11)
        • 이슈모아보기 (5)
        • 실생활지식 (5)
        • 재테크 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Utility
    hELLO 스킨
    언리얼 엔진
    다크모드
    AI 이미지
    유틸리티
    블로그
    부담부 증여
    AdSense
    웹 ui
    Meta Quest
    스테이블 디퓨전
    소프트웨어
    stable diffusion
    WEBUI
    광고
    티스토리챌린지
    부동산
    구글 애드센스
    메타 퀘스트
    플러그인
    Unreal Engine
    셀프 등기
    sd 1.5
    을사년
    티스토리
    오블완
    UE5
    언리얼5
    수동 광고
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
RightNowHJ
[언리얼 엔진] IWYU(Include-What-You-Use) 모델 설명

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.