UE4 4.10 Xcode project generation and usage

Just upgraded to 4.10.0 side by side with 4.9.2. Found that the new Xcode project (or workspace) generated by 4.10 is not as usable as 4.9, even though 4.10 generated Xcode project does look cleaner (no iOS schemes, for example)

But I found that with the 4.9.2 Xcode project, I can at least verify building for the iOS target more straightforward inside the Xcode project, without having to go to the UEditor and package.

Also, I am used to run the editor and the game ("-game") from within the Xcode after building my project, while there are several problems achieving this with 4.10:

  1. Even though the MyProject scheme builds fine, if I run the Editor with the “-game” mode, MyProject binary (not Xcode) prompts me that the binary UE4Editor-MyProject-Mac-DebugGame.dylib is not built, and asking me if I want to build the binary - there doesn’t seem a way within Xcode to build UE4Editor-MyProject anymore.

  2. Later, no matter how I change the source code, and attempted to run the “-game” mode from within the Xcode, it is always the previously built binary was loaded, not my newly built MyProject binary, unless I manually remove the binaries built for the “-game” mode

  3. I tried to run the “Product->Clean” command from within the Xcode project, and things become worse, in that now it complains that the UE4Editor.app from within the installation directory (/Users/Shared/UnrealEngine) is missing, and I am not able to package my project from within the editor!

  4. For the love of 4.9.2, I switched my project back to 4.9 (by restoring the uproject engine version to 4.9), and build everything and packaged my binary (as great as before). But now my binary built against 4.9.2 starts to constantly crash when running, so essentially rendering 4.9.2 not usable anymore. Not having the log, I remember I see from the crash log that the binary built against 4.9.2 mentions that the engine version to be 4.10.0! So something must be messed up somewhere. By the way, the 4.9.2 editor continues to run, and the “-game” mode works fine, only the packaged executable is crashing

What’s the rational of switching to the new Xcode generation scheme under 4.10? It degraded my productivity A LOT! Please switch back to how 4.9.2 did things!

The following is the crash log with a binary built against 4.9.2, with first switching to 4.10 and switching back to 4.9:

Fatal error: [File:/Users/build/BuildFarm/build_++depot+UE4-Releases+4.9/Engine/Source/Runtime/Core/Private/HAL/FileManagerGeneric.cpp] [Line: 647]
Invalid BufferCount=0 while reading /Users/lluo/Library/Application Support/Epic/Demo/Saved/ShaderCache.ushadercache. File is most likely corrupted, try deleting it if possible. Pos=64285540, Size=102268, PrecacheSize=2147483647, PrecacheOffset=64285540
LogMac:Error: appError called: Assertion failed: Assertion failed: [File:/Users/build/BuildFarm/build_++depot+UE4-Releases+4.9/Engine/Source/Runtime/Core/Private/HAL/FileManagerGeneric.cpp] [Line: 647]
Invalid BufferCount=0 while reading /Users/lluo/Library/Application Support/Epic/Demo/Saved/ShaderCache.ushadercache. File is most likely corrupted, try deleting it if possible. Pos=64285540, Size=102268, PrecacheSize=2147483647, PrecacheOffset=64285540

[2015.11.16-01.40.48:784][ 0]LogModuleManager:Warning: ModuleManager: Module ‘PakFile’ not found - its StaticallyLinkedModuleInitializers function is null.
[2015.11.16-01.40.48:784][ 0]LogPlatformFile: Not using cached read wrapper
[2015.11.16-01.40.48:784][ 0]LogModuleManager:Warning: ModuleManager: Module ‘SandboxFile’ not found - its StaticallyLinkedModuleInitializers function is null.
[2015.11.16-01.40.48:784][ 0]LogInit:Display: RandInit(-744292931) SRandInit(-744290622).
[2015.11.16-01.40.48:784][ 0]LogTaskGraph: Started task graph with 3 named threads and 6 total threads.
[2015.11.16-01.40.48:784][ 0]LogInit: Version: 4.10.0-2758231+++depot+UE4-Releases+4.10
[2015.11.16-01.40.48:785][ 0]LogInit: API Version: 2758231
[2015.11.16-01.40.48:785][ 0]LogInit: Compiled (64-bit): Nov 7 2015 09:20:28
[2015.11.16-01.40.48:785][ 0]LogInit: Compiled with Clang: 7.0.0 (clang-700.0.72)
[2015.11.16-01.40.48:785][ 0]LogInit: Build Configuration: Shipping
[2015.11.16-01.40.48:785][ 0]LogInit: Branch Name: ++depot+UE4-Releases+4.10
[2015.11.16-01.40.48:785][ 0]LogInit: Command line: “/Users/lluo/Library/Application Support/Epic/UnrealEngine/4.9/Saved/Crashes/CrashReport-UE4-Demo-pid-48838-29a02e60b3460f387fc4cd8ede741794/”
[2015.11.16-01.40.48:785][ 0]LogInit: Base directory: /Users/Shared/UnrealEngine/4.10/Engine/Binaries/Mac/
[2015.11.16-01.40.48:785][ 0]LogInit: Rocket: 1
[2015.11.16-01.40.48:787][ 0]LogInit: Presizing for 0 objects not considered by GC, pre-allocating 0 bytes.
[2015.11.16-01.40.48:789][ 0]LogInit: Object subsystem initialized
[2015.11.16-01.40.48:790][ 0]LogInit: Computer: lluo.local
[2015.11.16-01.40.48:790][ 0]LogInit: User: lluo
[2015.11.16-01.40.48:790][ 0]LogInit: CPU Page size=4096, Cores=4
[2015.11.16-01.40.48:790][ 0]LogInit: High frequency timer resolution =1000.000000 MHz
[2015.11.16-01.40.48:790][ 0]LogInit: Power Source: AC Power
[2015.11.16-01.40.48:790][ 0]LogInit: Memory total: Physical=16.0GB (16GB approx) Pagefile=1.0GB Virtual=17.0GB
[2015.11.16-01.40.48:794][ 0]LogTextLocalizationManager: No specific translations for (‘en-US’) exist, so (‘en’) translations will be used.
[2015.11.16-01.40.48:829][ 0]CrashReportClientLog: CrashReportReceiverIP: http://crashreporter.epicgames.com:57005
[2015.11.16-01.40.48:830][ 0]LogCrashDebugHelper: DepotName: //depot/UE4-Releases/4.10
[2015.11.16-01.40.48:830][ 0]LogCrashDebugHelper: BuiltFromCL: 2758231
[2015.11.16-01.40.48:830][ 0]LogCrashDebugHelper: EngineVersion:
LogCrashDebugHelper:Warning: Search patterns don’t match
[2015.11.16-01.40.48:830][ 0]LogCrashDebugHelper:Warning: Search patterns don’t match
LogCrashDebugHelper:Warning: PDB Cache disabled
[2015.11.16-01.40.48:830][ 0]LogCrashDebugHelper:Warning: PDB Cache disabled
[2015.11.16-01.40.48:918][ 0]CrashReportClientLog: Initial state = Unknown UploadState value
[2015.11.16-01.40.48:919][ 0]CrashReportClientLog: Sending HTTP request: http://crashreporter.epicgames.com:57005/CrashReporter/Ping
[2015.11.16-01.40.49:176][ 0]CrashReportClientLog: OnProcessRequestComplete(), State=PingingServer bSucceeded=1
[2015.11.16-01.40.49:176][ 0]CrashReportClientLog: State change from PingingServer to Ready

Hey lluo,

This was an intentional change so It now matches Visual Studio.

We shifted from having multiple schemes/projects to having more build configuration options.

So select your project scheme, then select to edit (shift+cmd+,) and can select

Debug
Debug Editor
DebugGame
DebugGame Editor
Development
Development Editor
Test
Shipping

67000-image.png

This is all the information I have on this transition, and this was a very recent change so documentation is going to be light on this topic. If you have further questions let me know. We more than likely will not be returning to how things were done in 4.9.2 and earlier, but if you have concerns or comments please let me know and I can pass them along to the correct source.

Thank you,

Iluo wrote:
Later, no matter how I change the source code, and attempted to run the “-game” mode from within the Xcode, it is always the previously built binary was loaded, not my newly built MyProject binary, unless I manually remove the binaries built for the “-game” mode

I also experienced loading of old binaries and ignoring source code changes , but can’t find out the reason.
Tried deleting files manually to no avail. There must be some caching or it’s caused by switching between release and debug mode.

Would like to see some enhancements here, because my productivity cycle is getting worse and worse.