빌드 시스템에 대해 이해가 되지 않는 부분이 있어 여쭤봅니다
656
작성한 질문수 19
Build.cs 파일에 PublicDependencyModuleNames 와 PrivateDependencyModuleNames 의 차이를 공홈에서 처럼 Public 폴더의 헤더(보통의 경우) 에서 참조하는 경우는 PublicDependencyModuleNames 를 사용하라 하는데요 이렇게 사용하면 안 좋다는 것을 알지만 PrivateDependencyModulesNames 에 추가해도 컴파일은 제대로 되다보니 이해가 안됩니다 ㅠ
예를 들면)
ModuleA
Public
-> ObjectA.h
ModuleB
Public
-> ObjectB.h
ModuleB.build.cs 의 PrivateDependencyModuleNames에 ModuleA 를 추가하더라도 ObjectB.h 에서 ObjectA 이 사용 가능한 상황입니다.
알려주세요 ㅠ
답변 1
1
네 언리얼 엔진의 모듈 구조는 넓게 세 개의 모듈 사이의 관계로 이해하시면 될 것 같아요. 두 개의 모듈 구조에서는 문의주신 것처럼 차이가 없습니다.
A모듈(엔진) - B모듈(플러그인) - C모듈(게임) 이라는 관계로 세 모듈이 연결되어 있다고 가정하겠습니다. 엔진 모듈 A가 최상단모듈이 되겠지요?
시나리오1) C모듈이 B모듈을 Public으로 설정하면 A모듈의 헤더 경로를 자동으로 얻어올 수 있습니다. 하지만 소스코드 링킹은 실패합니다.
시나리오2) C모듈이 B모듈을 Private로 설정하면 A모듈의 헤더 경로도 얻어올 수 없습니다. 소스코드 링킹도 실패하고요.
정리하면,
C모듈이 A모듈의 소스코드를 링크하기 위해서는 A모듈을 직접 참조해야 합니다. B를 통해서는 링크는 어떤 경우든 불가능합니다. 따라서 이런 경우에는 Public/Private 구조가 큰 의미 없습니다.
C모듈이 B모듈을 퍼블릭하게 참조하면 A모듈의 퍼블릭폴더 내 헤더파일은 가져올 수 있기 때문에, definition정도는 얻어온다는 편리함이 추가될 것 같네요.
사실 우리는 대부분 C아니면 가끔 B에서 작업하므로 이런 설계에 큰 고민을 하지 않아도 됩니다. A를 작업하는 사람은 헤더를 Public에 넣느냐, Private에 넣느냐에 따라 이후 모듈들이 참조하는 헤더에 영향을 주기때문에 가급적이면 외부에 노출할 필요 없는 모듈은 Private에 넣는것이 좋습니다.
헤더 파일 에러 이후 언리얼 엔진 프로젝트가 열리지 않습니다.
0
37
3
저는 저 노란색 미리보기 창이 안뜹니다
0
47
2
강의중에 사용하는 ppt 수업 자료
0
72
2
GetName(), SetName() 함수의 오버로딩 관련 문제 문의드립니다.
1
71
2
언리얼 공부 방법에 대해서 질문드립니다.
0
99
2
컴포지션을 위한 컴포넌트 생성에 관해 질문드립니다.
0
109
2
if (NameProp) 은 if (NameProp != nullptr)이랑 같은 의미인가요?
0
110
2
언리얼 계정 로그인 불가 문제
0
136
2
가비지컬렉션 주기를 짧게 유지하면 어떤 이슈가있을까요?
0
87
2
11강 TArray TSet 에 대해서 질문있습니다.
0
78
1
Unreal 연동 후 Visual Studio 빌드오류 제발 살려주십쇼
0
416
3
언리얼에서 제공하는 스마트 포인터 라이브러리 사용
0
88
2
FGCObject 상속 받은 객체에서 Uobject 삭제를 원할 때
0
96
2
게임 내 인벤토리 데이터를 관리 할 경우, TArray / TSet 무엇이 올바를까요?
0
80
2
8강 컴포지션 중 궁금한 것이 있습니다.
0
64
2
헤더 파일 분리 방법
0
95
2
언리얼 엔진 깃 설치
0
100
2
FObjectInitializer 를 사용한 생성자.
0
105
2
언리얼엔진 에서 새로운 클래스를 생성하면
0
82
2
GetName이 이미있는데용?
0
118
2
TObjectPtr 과 일반 포인터에 대한 용도 질문
0
117
2
UPROPERTY() 다음 라인에서 세미콜론이 입력되지 않습니다.
0
180
1
[18:50] 패키지 저장 시 이미 패키지가 있으면 로딩을 다 하고 저장하는 것이 좋은 이유가 궁금합니다
0
146
2
NonPropStudent가 GC이후 invalid된 이유
0
84
2





