When trying to compile the new hotfix 4.23.1 the editor on Ubuntu 16.04 from the current release branch on GitHub (tagged as 4.23.1-release) I get the following result:
$ (release):/opt/UnrealEngine> ./Setup.sh
Registering git hooks... (this will override existing ones!)
Fixing inconsistent case in filenames.
Setting up Mono
Checking dependencies...
The following file(s) have been modified:
Engine/Binaries/ThirdParty/Mono/Linux/etc/mono/registry/last-btime
Would you like to overwrite your changes (y/n)? y
Updating dependencies: 100% (1/1), 0.6 MiB cached, done.
Result: 0
Register the engine installation...
Installing a bundled clang toolchain
Toolchain already installed skipping.
Target arch set to: x86_64-unknown-linux-gnu
Building ThirdParty libraries
If you don't see SUCCESS message in the end, then building did not finish properly.
In that case, take a look into /opt/UnrealEngine/Engine/Build/BatchFiles/Linux/BuildThirdParty.log for details.
No third party libs needed to be built locally
********** SUCCESS ****************
Setup successful.
$ (release):/opt/UnrealEngine> ./GenerateProjectFiles.sh
Attempting to set up UE4 pretty printers for gdb (existing UE4Printers.py, if any, will be overwritten)...
updated UE4Printers.py
found necessary entries in ~/.gdbinit file, not changing it.
Setting up Unreal Engine 4 project files...
Fixing inconsistent case in filenames.
Setting up Mono
Generating data for project indexing... 100%
Writing project files... 100%
$ (release):/opt/UnrealEngine> make
make[2]: *** No rule to make target 'CMakeFiles/FakeTarget.dir/build'. Stop.
CMakeFiles/Makefile2:1507: recipe for target 'CMakeFiles/FakeTarget.dir/all' failed
make[1]: *** [CMakeFiles/FakeTarget.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
$ (release):/opt/UnrealEngine> make all
make[2]: *** No rule to make target 'CMakeFiles/FakeTarget.dir/build'. Stop.
CMakeFiles/Makefile2:1507: recipe for target 'CMakeFiles/FakeTarget.dir/all' failed
make[1]: *** [CMakeFiles/FakeTarget.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
$ (release):/opt/UnrealEngine> make CrashReportClient ShaderCompileWorker UnrealLightmass UnrealPak UE4Editor
Fixing inconsistent case in filenames.
Setting up Mono
Building CrashReportClient...
Using 'git status' to determine working set for adaptive non-unity build (/opt/UnrealEngine).
Creating makefile for CrashReportClient (no existing makefile)
------- Build details --------
Using toolchain located at '/opt/UnrealEngine/Engine/Extras/ThirdPartyNotUE/SDKs/HostLinux/Linux_x64/v15_clang-8.0.1-centos7/x86_64-unknown-linux-gnu'.
Using clang (/opt/UnrealEngine/Engine/Extras/ThirdPartyNotUE/SDKs/HostLinux/Linux_x64/v15_clang-8.0.1-centos7/x86_64-unknown-linux-gnu/bin/clang++) version '8.0.1' (string), 8 (major), 0 (minor), 1 (patch)
Using bundled libc++ standard C++ library.
Using lld linker
Using llvm-ar : /opt/UnrealEngine/Engine/Extras/ThirdPartyNotUE/SDKs/HostLinux/Linux_x64/v15_clang-8.0.1-centos7/x86_64-unknown-linux-gnu/bin/llvm-ar
Using fast way to relink circularly dependent libraries (no FixDeps).
------------------------------
ERROR: Cannot use an old toolchain (missing ToolchainVersion.txt file, assuming version earlier than v11)
CMakeFiles/CrashReportClient.dir/build.make:57: recipe for target 'CMakeFiles/CrashReportClient' failed
make[3]: *** [CMakeFiles/CrashReportClient] Error 5
CMakeFiles/Makefile2:4168: recipe for target 'CMakeFiles/CrashReportClient.dir/all' failed
make[2]: *** [CMakeFiles/CrashReportClient.dir/all] Error 2
CMakeFiles/Makefile2:4175: recipe for target 'CMakeFiles/CrashReportClient.dir/rule' failed
make[1]: *** [CMakeFiles/CrashReportClient.dir/rule] Error 2
Makefile:1782: recipe for target 'CrashReportClient' failed
make: *** [CrashReportClient] Error 2
The concrete problem is logged as ERROR: Cannot use an old toolchain (missing ToolchainVersion.txt file, assuming version earlier than v11)
. I haven’t encountered this problem when building versions 4.22 and 4.23 and I can’t seem to find what was changed in between to cause this. Has anyone got a clue?
PS: What’s the deal with this FakeTarget
that doesn’t have a rule when building with the default make
command? It didn’t work on either version I tried. As a workaround I had to build the targets manually as described on the official Linux native build site (also shown in the logs above).