---
title: "Unreal Plugin多个模块开发与编译"
author: "Perrin Yong"
author_profile: https://www.pystone.net/profile/
published_by: "Perrin Yong"
canonical: https://www.pystone.net/notes/unreal-plugin-multi-module-build/
type: note
content_role: unspecified
visibility: public
id_stability: rename-stable
source_path: "10-计算机、信息技术与工程/05-游戏图形与运行时/Unreal/Unreal Plugin多个模块开发与编译.md"
content_hash: 1a7af6ddf0344ed4104d9c9b254374c88c358c92b7597b524187950534025d20
knowledge_version: 224c990773de.5fa8af6e39fa
site_commit: 224c990773de166d23a886306577dd90379529ce
notes_commit: 5fa8af6e39fa3891d1b9b4832bfa6c4e0ecaaf0a
---
# Unreal Plugin多个模块开发与编译

﻿# Unreal Plugin多个模块开发与编译

> 创建时间：2022/4/25 22:16

要写与模块名称相同的Module类，实现StartupModule、ShutdownModule函数，模块才能加载进来。

![assets/0013 - Unreal Plugin多个模块开发与编译__resource-002-9f2e6287b6ec.png](/media/31b84ad7e3b9f6357a80.png)

模块的类型，如果要暴露给其他模块使用，要用 MODULENAME_API 来进行标记

![assets/0013 - Unreal Plugin多个模块开发与编译__resource-001-1b805939569d.png](/media/1aa9e5e54933bf824759.png)

模块之间互相引用只要使用 PublicDependencyModuleNames.AddRange 即可。

至于说代码的头文件include，是否要添加PublicIncludePaths，取决于include的时候的方式，因为Paths是提供搜索的目标路径的，为了使搜索头文件的时候能搜索到。如果include命令保证头文件能搜索到就OK，如果搜索不到，就添加Public IncludePaths

Unreal C++代码的的Compile是以Module为单位的，可以在Unreal Editor的UI上，点击Compile，单独对某个模块进行编译。

![assets/0013 - Unreal Plugin多个模块开发与编译__resource-003-de6781a4ca95.png](/media/41bc4a99aed8d1f9d5b2.png)

UI按钮的本质也是命令行语句，所以是存在语句用来编译单个模块的，只是现在还没有对RunUAT的命令行使用方法摸清楚，不知道如何编译单个模块。

只要Compile，就会把模块的所有代码都进行编译，至于说Private和Public源码是否保留，看我们如何设定。

Private和Public文件夹对于编译程序来说，并没有什么区别，只是对于开发者来设定的。Public一般是开源的部分。

Unreal中插件通常的使用方式是，把代码编译好成dll、so等后，留下来一部分头文件，开放给用户，用户就可以在自己的工程当中引用这个头文件了。
