Search code examples
unreal-engine4unreal-engine5

How to package UE5 plugin for all build configurations?


I have a plugin that I needed to package to use only the public part in other projects, I created a project in version 5.1 and installed the plugin there and started packaging it. Because my plugin depended on another one I had to install the source of the engine, put the other plugin into the engine and package it using the engine's BuildPlugin command. As a result, the plugin is packaged and works in another project, but only in the Development Editor configuration. Because when I run the project in DebugGame Editor for example, I get an error that I can't find the .lib file for this configuration in the Intermediate plugin folder. My question is how can I package the plugin to run it under any configuration?

I tried:

  • Setup the .uplugin
  • Setup the BuildPlugin command
  • Use different combinations, e.g. list of configurations only in .uplugin or in BuildPlugin, together, nowhere.
  • Build the source engine in all configurations

How .uplugin looks like at the moment:

"Modules": [
        {
            "Name": "QORPOUEFRM",
            "Type": "Runtime",
            "LoadingPhase": "Default",
            "WhitelistTargetConfigurations": [ "DebugGame", "Development", "Shipping" ],
            "WhitelistTargets" : [ "Game", "Editor", "Client", "Server", "Program" ],
            "WhitelistPlatforms": [ "Win64" ]
        }
    ],

How BuildPlugin looks like at the moment:

"D:\UEngines\UnrealEngine\Engine\Build\BatchFiles\RunUAT.bat" BuildPlugin -Plugin="D:\Plugins\ProjectForPlugin\Plugins\QORPOUEFRM\QORPOUEFRM.uplugin" -Configuration=DebugGame+Development+Shipping -EditorConfig=DebugGameEditor+DevelopmentEditor -TargetPlatforms=Win64 -Package="D:\Plugins\Packaged\ver3\QORPOUEFRM" -Rocket -VS2022

Solution

  • Bad news. The BuildPlugin command is hardcoded to only build the DevelopmentEditor, Development and Shipping configurations, as you can see in the source of BuildPluginCommand.Automation.cs: enter image description here

    You could potentially modify this code and recompile it, replacing the vanilla AutomationScripts.Automation.dll in your engine installation.