Generic name for built plugin library

I have an internal game plugin library that contains code as well as blueprint assets. With perforce I’m able to insert this plugin (through a single perforce folder) into a bunch of different projects. The problem is that when I make changes to the code and blueprints, I will need to update the binaries and distribute them (again through a single perforce folder) along with my blueprints to my artists and designers. When I build the plugin (for both editor and package building) while in any specific project (for example, my Showroom project), I get the following list of files to provide to my artists/designers…

  • Showroom-NurulizeComponents-Static.lib
  • UE4Editor-NurulizeComponents.dll
  • UE4Editor-NurulizeComponents.pdb

The issue is the Showroom-NurulizeComponents-Static.lib. Because of the Showroom prefix, other projects won’t be able to find the static library. Additionally, I don’t want to have to build (and distribute) the project named static library for every project that we have.

Is there a way to make the lib name generic so it can be used across a multitude of projects? How are 3rd party libraries doing this? Is there an option to make a generic named library or dll within the Unreal Build System?


Is there some parameter I can set or such? If so, I’ve not been able to find it in the class declarations.

Hey JasonKng,

Were you able to find an answer you were looking for?

If you haven’t taken a read through it already, we have updated our Packaging documentation a bit. Let me know if you still need help.

Packaging Projects


ShouldUseSharedBuildEnvironment (Distributing plugin without source - Plugins - Epic Developer Community Forums) appears to be what I was looking for in this specific issue. My initial tests indicate that ShouldUseSharedBuildEnvironment does create non-project specific named libraries. But I’ve not had time to fully test out the ability to swap those libraries among projects.

Guys, if anyone is looking for at this post UE 4.16, there has been a change. According to the changelog in UE 4.20 source code:

**The TargetRules.ShouldUseSharedBuildEnvironment() function has been deprecated. Targets can now specify the build environment they wish to use by setting BuildEnvironment to TargetBuildEnvironment.Default/Shared/Unique in their constructor instead. **

I’ve manage to succeed with this line in my .Target.cs file right after:

Type = TargetType.Game;
BuildEnvironment = TargetBuildEnvironment.Shared;

Good luck because this is severely under-documented everywhere.