# Plugin dependent on another plugin

**URL:** <https://forums.unrealengine.com/t/plugin-dependent-on-another-plugin/387324>\
**Category:** Plugins\
**Tags:** dependencies, unreal-engine, Plugins, question\
**Created:** [March 8, 2017, 3:43pm UTC](https://forums.unrealengine.com/t/plugin-dependent-on-another-plugin/387324 "2017-03-08T15:43:47Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![BasV](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@BasV](https://forums.unrealengine.com/u/BasV)\
**Post date:** [March 8, 2017, 3:43pm UTC](https://forums.unrealengine.com/t/plugin-dependent-on-another-plugin/387324/1 "2017-03-08T15:43:47Z")

</div>

Hi,

We’ve built the core of our project as a plugin because it serves as base for multiple uprojects. Our plugin depends on 2 other plugins, one of which is an engine plugin (WebBrowserWidget) and the other is FMODStudio (we’re using it as C++ dependency). Right now, this means our uproject needs to load our own plugin as well as these two to be able to load up correctly. Our own plugin lists WebBrowserWidget and FMODStudio as public dependencies, but I’m looking for a way to have it tell the uproject these other 2 plugins also need to be loaded.

In other words - how do I setup my plugin in such a way that it forces any uproject using it to load 2 other plugins?

Right now, if the uproject does not load our 2 dependency plugins, it will crash saying it was unable to load our own plugin.

Cheers!

---

<div class="post-metadata">

**Author:** ![anonymous\_user\_b666e59e](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@anonymous\_user\_b666e59e](https://forums.unrealengine.com/u/anonymous_user_b666e59e)\
**Post date:** [March 29, 2017, 4:38pm UTC](https://forums.unrealengine.com/t/plugin-dependent-on-another-plugin/387324/2 "2017-03-29T16:38:49Z")

</div>

Hi ,

Sorry for the delayed response to your question. Have you tried adding a “Plugins” section to the .uproject file? Something like this:

```
"Plugins": [
		{
			"Name": "MyPlugin",
			"Enabled": true
		},
		{
			"Name": "MyOtherPlugin",
			"Enabled": true
		}

```

This will tell the .uproject file to make sure any listed plugins are present when opening the project in the Editor. If they are not included in the project, a notification will pop up to alert you. Does that meet your needs?

---

<div class="post-metadata">

**Author:** ![BasV](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@BasV](https://forums.unrealengine.com/u/BasV)\
**Post date:** [March 30, 2017, 10:00am UTC](https://forums.unrealengine.com/t/plugin-dependent-on-another-plugin/387324/3 "2017-03-30T10:00:58Z")

</div>

Hi ,

Thanks for the response: This is however not what I’m looking for - I was hoping there’s some way to ‘force’ this behavior to happen without having to tell the uproject it. I would like for the uproject to recognise my plugin has these dependencies and then load it automatically, so the user of my plugin doesn’t need to include multiple plugins just to use one!

Cheers

---

<div class="post-metadata">

**Author:** ![zbrtcchr](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@zbrtcchr](https://forums.unrealengine.com/u/zbrtcchr)\
**Post date:** [August 26, 2017, 2:40am UTC](https://forums.unrealengine.com/t/plugin-dependent-on-another-plugin/387324/4 "2017-08-26T02:40:06Z")

</div>

Hi, , did you ever findout how to do this? Thanks.

---

<div class="post-metadata">

**Author:** ![BasV](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@BasV](https://forums.unrealengine.com/u/BasV)\
**Post date:** [August 28, 2017, 6:07pm UTC](https://forums.unrealengine.com/t/plugin-dependent-on-another-plugin/387324/5 "2017-08-28T18:07:44Z")

</div>

Sadly, no. Right now I’m trying to minimize dependencies and when we do have one we just have to include it in the project’s plugin list. In a way it makes sense - plugins shouldn’t depend upon one another. Good luck!

---

<div class="post-metadata">

**Author:** ![zbrtcchr](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@zbrtcchr](https://forums.unrealengine.com/u/zbrtcchr)\
**Post date:** [August 29, 2017, 4:05am UTC](https://forums.unrealengine.com/t/plugin-dependent-on-another-plugin/387324/6 "2017-08-29T04:05:57Z")

</div>

Well, I understand that. But in your case it isn’t actually dependent on one another. Only your plugin is dependent on the 2 plugins, WebBrowserWidget and FMODStudio, but they are not dependent on your plugin.

Isn’t it the same as the case of the plugins OnlineSubsystem and others extending from it like OnlineSubsystemFacebook, OnlineSubsystemAmazon, OnlineSubsystemSteam, etc.

Those many other plugins depend on OnlineSubsystem plugin but not vice versa. Right? And Epic has done it. Or is there something I don’t see here?

---

<div class="post-metadata">

**Author:** ![BasV](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@BasV](https://forums.unrealengine.com/u/BasV)\
**Post date:** [September 6, 2017, 9:52am UTC](https://forums.unrealengine.com/t/plugin-dependent-on-another-plugin/387324/7 "2017-09-06T09:52:27Z")

</div>

Hi! Good news:

> **[Unreal Engine 4.17 Released!](https://www.unrealengine.com/en-US/blog/unreal-engine-4-17-released)**
>
> Unreal Engine 4.17 is now available for download and includes numerous updates and new features such as major enhancements to Sequencer, the new Composure compositing system , Xbox One X support and much more. Read the full release notes...

Quote from it:

New: Dependencies between plugins

Plugins can now declare dependencies on other plugins that the engine will use to automatically enable and load additional plugins they depend on. Dependencies can be listed in a .uplugin using with the same syntax as .uproject files.

I haven’t tried it yet because our project is currently in 4.16, but it looks good!

---

<div class="post-metadata">

**Author:** ![zbrtcchr](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@zbrtcchr](https://forums.unrealengine.com/u/zbrtcchr)\
**Post date:** [September 6, 2017, 11:52am UTC](https://forums.unrealengine.com/t/plugin-dependent-on-another-plugin/387324/8 "2017-09-06T11:52:44Z")

</div>

Wow. That’s great. I also can’t try it because mine is also in 4.16. But it’s good to know

---

<div class="post-metadata">

**Author:** ![anonymous\_user\_10b75a231](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@anonymous\_user\_10b75a231](https://forums.unrealengine.com/u/anonymous_user_10b75a231)\
**Post date:** [September 11, 2017, 6:05pm UTC](https://forums.unrealengine.com/t/plugin-dependent-on-another-plugin/387324/9 "2017-09-11T18:05:56Z")

</div>

FWIW, just tried this out in 4.17. In the .uplugin file of your plugin that will load an additional plugin, add a “Plugins” field on the same level as the other fields:

**MyPlugin.uplugin:**

```
"Modules": [
    {
      "Name": "MyPlugin",
      "Type": "Runtime",
      "LoadingPhase": "Default"
    }
  ],
  "Plugins": [ // <--
    { // <--
      "Name": "AdditionalPlugin", // <--
      "Enabled": true // <--
    } // <--
  ] // <--

```

Then simply include the additional plugin in the PublicDependencyModuleNames of the plugin’s Build.cs:

**MyPlugin.Build.cs:**

```
PublicDependencyModuleNames.AddRange(
	new string[]
	{
		"Core",
		"CoreUObject",
        "Engine",
        "AdditionalPlugin", // <--
	}
);

```

And of course make sure the parts of the additional plugin you want to use are properly exported using the `ADDITIONALPLUGIN_API` notation or you’ll get a LNK2019 unresolved external symbol error.

---

<div class="post-metadata">

**Author:** ![flame\_7777](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@flame\_7777](https://forums.unrealengine.com/u/flame_7777)\
**Post date:** [November 1, 2020, 8:02am UTC](https://forums.unrealengine.com/t/plugin-dependent-on-another-plugin/387324/10 "2020-11-01T08:02:32Z")

</div>

do you mean this?

```
UCLASS()
class ADDITIONALPLUGIN_API USomeClass

```

I found ADDITIONALPLUGIN\_API in \*.generated.h file

---

<div class="post-metadata">

**Author:** ![Crovea](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Crovea](https://forums.unrealengine.com/u/Crovea)\
**Post date:** [November 20, 2023, 9:18pm UTC](https://forums.unrealengine.com/t/plugin-dependent-on-another-plugin/387324/11 "2023-11-20T21:18:26Z")

</div>

For anyone with issues packaging a plugin with a dependency on another plugin, try placing the dependency plugin in the unreal engine folder \Engine\Plugins\Marketplace

You may then get an error that mentions you need to set:  
PrecompileForTargets = PrecompileTargetsType.Any  
Which I simply solved by making sure the plugin i placed in the above folder was itself a packaged version

---

<div class="post-metadata">

**Author:** ![Phill\_Zeratul](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/phill_zeratul/32/763693_2.png) [@Phill\_Zeratul](https://forums.unrealengine.com/u/Phill_Zeratul)\
**Post date:** [January 19, 2024, 3:01am UTC](https://forums.unrealengine.com/t/plugin-dependent-on-another-plugin/387324/12 "2024-01-19T03:01:20Z")

</div>

> [@anonymous\_user\_10b75a231](#):
>
> And of course make sure the parts of the additional plugin you want to use are properly exported using the `ADDITIONALPLUGIN_API` notation or you’ll get a LNK2019 unresolved external symbol error.

Does this mean if the additional plugin didn’t use the `ADDITIONALPLUGIN_API` notion, there is no way we can use the functions implemented there?  
There is an extension plugin that implements a lot of helper functions that are BlueprintCallable but not exported with `THATPLUGIN_API` and I really want to use them.

---

<div class="post-metadata">

**Author:** ![DryreL](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/dryrel/32/1042339_2.png) [@DryreL](https://forums.unrealengine.com/u/DryreL)\
**Post date:** [February 9, 2024, 3:21pm UTC](https://forums.unrealengine.com/t/plugin-dependent-on-another-plugin/387324/13 "2024-02-09T15:21:15Z")

</div>

Thank you!

---

<div class="post-metadata">

**Author:** ![FutureCake](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/futurecake/32/1085599_2.png) [@FutureCake](https://forums.unrealengine.com/u/FutureCake)\
**Post date:** [April 9, 2026, 11:52am UTC](https://forums.unrealengine.com/t/plugin-dependent-on-another-plugin/387324/14 "2026-04-09T11:52:48Z")

</div>

As an addition for if anyone has a Content-Only plugin (So no C++ code & Source folder even):

Just add this section to your .uplugin (Use the names of the plugins that your plugin is dependent on. Mine is dependent on these two. No need for a Modules section:

```
"Plugins": [
	{
		"Name": "AnimationLocomotionLibrary",
		"Enabled": true
	},
	{
		"Name": "AnimationWarping",
		"Enabled": true
	}
]

```

// Then when you add it to any projects /plugins folder and reopen the project, your plugin and the ones it requires should be enabled.
