UE4.16 and plugin backward compatibility

Hey all,

I just got 4.16 preview 2 to start work on supporting 4.16 for my plugin, and I’m hitting an issue with UnrealBuildTool. Basically, the ModuleRules have changed, and so I need to modify my module constructors. I did the proper modifications, and everything works fine, but I need to still support 4.15 (and probably even earlier versions). Trying to use the updated .Build.cs file breaks in 4.15, so I’m a bit stuck.

Of course, I could maintain multiple versions of my .Build.cs files, but that has the potential of getting messy really fast. A cleaner solution would be to have the engine version available in a #define, but I can’t find anything in UBT sources.

So far, from 4.0 to 4.15, I’ve been able to maintain one version of my plugin sources that support all versions (within reasonable time frames), but 4.16 breaks this. Is there any possibility of patching UBT in a future 4.16 preview so that I can keep backwards compatibility in time for the official 4.16 release?


For those wondering, there exists an undocumented solution that will be documented in the official 4.16 release:
For the new ModuleRules, you can use the define WITH_FORWARDED_MODULE_RULES_CTOR, and a similar define exists for targets: WITH_FORWARDED_TARGET_RULES_CTOR