You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
107 lines
6.0 KiB
Plaintext
107 lines
6.0 KiB
Plaintext
INTSourceChangelist:2591123
|
|
Availability:Public
|
|
Title: 리눅스 프로젝트 개발 시작하기
|
|
Crumbs:%ROOT%, Platforms, Platforms/Linux
|
|
Description:리눅스 플랫폼용 개발 셋업하기 입니다.
|
|
|
|
%Globals:BinarySourceSelectVar%
|
|
|
|
[TOC(start:2 end:3)]
|
|
|
|
## 왜 크로스 컴파일인가
|
|
|
|
크로스 컴파일을 선택한 이유는, (윈도우 중심 작업방식을 갖는 경향이 있는) 게임 개발자가 리눅스를 타겟으로 하기 쉽도록 하기 위함입니다. 현재 이 기능은 윈도우에만 지원되며, 맥 사용자들은 [네이티브 컴파일](https://wiki.unrealengine.com/Building_On_Linux) 에 의존해야 합니다. Linux-x86_64 를 지원 및 테스트는 합니다만, 라이브러리와 툴체인을 (clang-3.5.0-arm) 제공하여 리눅스 ARM 컴파일도 가능은 합니다만 (원래는 Raspberry Pi 이상), UBT 에 (약간의) 코드 변경이 필요할 것입니다.
|
|
|
|
아래 대부분은 (툴체인이 다르다는 것만 제외하면) ARM 컴파일에도 적용되지만, 여기서는 x86_64 리눅스를 타겟으로 삼는다 가정하겠습니다. 참고로 다른 버전의 툴이나 다른 아키텍처를 타겟으로 삼고자 하는 경우, 툴체인을 [직접 빌드](https://wiki.unrealengine.com/Building_Linux_cross-toolchain) 할 수도 있습니다.
|
|
|
|
## 툴체인 셋업
|
|
|
|
LINUX_ROOT 라는 이름의 환경변수를 추가 (제어판->시스템->고급 시스템 세팅->고급->환경 변수), 그 값은 툴체인 절대 경로로 하고, 끝에 백슬래시는 붙이지 않습니다.
|
|
|
|

|
|
|
|
변수 설정을 확인했으면, UE4 프로젝트 파일을 (GenerateProjectFiles.bat 로) 재생성하고 Visual Studio 를 재시작합니다. 그러고나면 Win32/Win64 환경설정 사이에 "Linux" 가 있을 것이며, 크로스 컴파일이 가능할 것입니다.
|
|
|
|
## 리눅스용 셋업 및 패키징
|
|
|
|
[OBJECT:ToggleButtonContent]
|
|
[PARAMLITERAL:category]
|
|
BinarySourceSelect
|
|
[/PARAMLITERAL]
|
|
[PARAMLITERAL:id]
|
|
binaryinstall
|
|
[/PARAMLITERAL]
|
|
[PARAMLITERAL:active]
|
|
active_button_content
|
|
[/PARAMLITERAL]
|
|
[PARAM:content]
|
|
%binary%
|
|
[/PARAM]
|
|
[/OBJECT]
|
|
[OBJECT:ToggleButtonContent]
|
|
[PARAMLITERAL:category]
|
|
BinarySourceSelect
|
|
[/PARAMLITERAL]
|
|
[PARAMLITERAL:id]
|
|
sourceinstall
|
|
[/PARAMLITERAL]
|
|
[PARAMLITERAL:active]
|
|
[/PARAMLITERAL]
|
|
[PARAM:content]
|
|
%source%
|
|
[/PARAM]
|
|
[/OBJECT]
|
|
|
|
[VAR:source]
|
|
리눅스 플랫폼용 패키징을 위해서는 다음 타겟 빌드를 해줘야 합니다:
|
|
|
|
리눅스용:
|
|
|
|
* CrashReportClient
|
|
* UE4Game (프로젝트가 콘텐츠 전용인 경우. 아니면 그냥 프로젝트만 빌드하세요).
|
|
|
|
윈도우용:
|
|
|
|
* 에디터 자체 (리눅스 타겟 모듈 빌드를 위해 필요한 부분인데, 그래야 언리얼 에디터와 언리얼 프론트엔드가 리눅스용 게임 쿠킹/패키징 방법을 알기 때문입니다).
|
|
* UnrealPak, ShaderCompileWorker (어찌됐든 빌드를 해야 하는 부분이지만, 완성도를 위해 언급합니다).
|
|
|
|
[/VAR]
|
|
|
|
[VAR:binary]
|
|
참고로 바이너리 릴리즈는 콘텐츠 전용 프로젝트만 패키징 가능합니다. 리눅스용 코드 기반 (또는 기본적이지 않은 써드 파티 플러그인이 포함된) 프로젝트를 패키징하려는 경우, 소스 빌드를 구성해야 할 것입니다. 그 외에 콘텐츠 전용으로도 괜찮은 경우, UE4Game 이나 CrashReportClient 의 리눅스 바이너리로 포함시켜 빌드할 필요가 없습니다.
|
|
[/VAR]
|
|
|
|
## 리눅스용 패키징
|
|
|
|
프로젝트 패키징의 가장 쉬운 방법은 에디터에서 연 다음 파일>패키지 프로젝트>리눅스 로 하는 것입니다 (물론 전 단계에서 크로스 툴체인을 설치했고, 리눅스 타겟 모듈이 해당 에디터 용으로 빌드되었다는 가정하에서입니다. 목록에 리눅스가 보이지 않는다면, 아마도 그 둘 중 하나가 잘못되었을 확률이 높습니다). 얼마 (프로젝트에 따라 다르지만, 샘플 프로젝트라면 꽤나 잠깐) 후, 패키징하도록 선택한 디렉토리에 게임 애셋과 바이너리가 들어갈 것입니다.
|
|
|
|
패키징 프로세스의 세부사항은 "출력 로그 표시" 링크를 클릭하면 볼 수 있습니다. 이 프로세스가 "UnrealPak 또는 ShaderCompileWorker 를 찾을 수 없다"는 오류 메시지를 내며 실패했다면, 위에서 호스트 (윈도우) 플랫폼용으로 해당 항목을 빌드하는 부분을 참고하시기 바랍니다.
|
|
|
|
Scp 또는 다른 방법으로 타겟 머신에 복사하고 (Samba 공유 마운팅 방법을 아신다면 타겟 머신의 디스크 공간이 부족한 경우 좋으며, 반복처리 시간도 단축됩니다), 타겟 실행파일을 chmod +x 한 뒤 (그 위치는 LinuxNoEditor/<ProjectName>/Binaries/Linux/ 디렉토리 입니다), 실행합니다.
|
|
|
|
### 리눅스 ARM 플랫폼용 변경사항
|
|
|
|
리눅스 ARM 크로스 컴파일 툴체인을 사용하는 경우, GenerateProjectFiles.bat 실행 전 UE4 소스 코드에서 다음 파일을 편집해 줍니다:
|
|
|
|
.../UnrealEngine/Engine/Source/Programs/UnrealBuildTool/Linux/UEBuildLinux.cs
|
|
|
|
여기서 다음 줄을 코멘트로 빼냅니다:
|
|
|
|
static private string DefaultArchitecture = "x86_64-unknown-linux-gnu";
|
|
|
|
그리고 그 바로 아래 linux-arm 아키텍처 줄의 코멘트 부분을 제거합니다:
|
|
|
|
//static private string DefaultArchitecture = "arm-unknown-linux-gnueabihf";
|
|
|
|
리눅스 ARM 플랫폼에서 패키징된 프로젝트를 실행가능하도록 하려면 추가적인 단계가 필요합니다. 패키징된 프로젝트의 위치가 \foo\bar\SunTemple_Linux 라 가정하고, 다음 위치를 엽니다:
|
|
|
|
\foo\bar\SunTemple_Linux\LinuxNoEditor\Engine\Binaries\Linux
|
|
|
|
그리고 libopenal.so.1 을 다음 버전으로 대체합니다:
|
|
|
|
...\UnrealEngine\Engine\Source\ThirdParty\OpenAL\1.15.1\lib\Linux\arm-unknown-linux-gnueabihf\libopenal.so
|
|
|
|
...\UnrealEngine 부분은 UE4 소스 코드 위치입니다. libopenal.so 를 libopenal.so.1 로 바꿨는지 확인해 주세요.
|
|
|
|
이제 프로젝트를 타겟 머신으로 복사하고, 타겟 실행파일을 chmod +x 해 준 다음 위 방법대로 실행해 주면 됩니다.
|