UE4 的功能被分成了很多的模块,在API文档里每个类都有 Module 这个属性(值为模块名)
每个模块使用其他模块要在Build.cs里导入,像vs里的引入库。
在构建时 PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" });//引入模块
或:PrivateDependencyModuleNames.AddRange(new string[] { "Sockets"});

UnrealBuildTool
使用C#写成,在源码工程里有这个,UE4使用这个项目配合Build.cs编译UE4。
UE4项目编译时会先调用构建工具,再跟据平台调用相应的编译器,以及添加自己的一些特殊定义。

  获取目录

var basePath = Path.GetDirectoryName(RulesCompiler.GetModuleFilename(this.GetType().Name));//项目目录
string path = Path.GetFullPath(Path.Combine(ModuleDirectory, "../../Test/"));//模块目录  插件常用

  引入外部库

PublicIncludePaths.Add(Path);//外部库头文件目录
PublicLibraryPaths.Add(Path); //.lib目录
PublicAdditionalLibraries.Add("SixAxisSlave_x64.lib");//要链接的.lib文件

  动态DLL的加载

PublicDelayLoadDLLs.Add("opencv_world320.dll");//运行时要加载的DLL
RuntimeDependencies.Add(new RuntimeDependency(dllPath+ "opencv_world320.dll"));//打包时要拷贝的DLL 要注意使用的路径就是拷贝后路径

模块开发
1、模块继承 IModuleInterface 实现自己的 IMyModule 接口
2、实现自己IMyModule接口
4、IMPLEMENT_MODULE <-有dllexport 关键字  导出模块接口   说起来IMPLEMENT_PRIMARY_GAME_MODULE 游戏项目内也有 游戏也属模块
5、UBT根据起始目录构建  Editor Runtime Developer ThirdParty
6、未使用的模块不会编译
7、模块内的类会加上 模块名_API 这个宏,在生成VS项目,编译时都会用到,如果没加编译时会忽略文件。

运行
以 UE引擎下 Binaries\Win64 为运行目录
分2进程:进程一、UE源 启动编辑器创建页,进程二、编辑器创建页  创建新的项目,项目使用UE源。

插件
注意 .uplugin配置  Modules下的Type 如果是Develop 在打包运行时不会加载

其他
在C++类使用了插件模块的时候Build.cs要引入插件模块名
要拷贝dll文件到Binaries\Win64下  在使用插件提示dll找不到 要拷贝 opencv-ue4editor.dll 之类的

UE4 编译笔记的更多相关文章

  1. LFS7.4编译笔记(3)

    在第一部分,我们编译了一个工具链及临时系统,然后在第二部分我们chroot到/mnt/lfs下面,利用临时系统的工具编译了我们最终的LFS系统.不过此时,我们的LFS系统还是不完整的,因为我们还没有安 ...

  2. MRuby 编译笔记

    专注于嵌入式脚本的MRuby在Windows下的编译笔记: 环境: OS: Windows 8.1, 使用 VS Express 2013 for Desktop. 材料: MRuby : 下载源码就 ...

  3. 支持源码单步调试QT库编译笔记

    支持源码单步调试QT库编译笔记 编译环境:windows 10 编译工具:mingw_4_4_0 Qt源码版本:qt-everywhere-opensource-src-4.8.5(下载地址:http ...

  4. INSIDE COM 最后一章例子 TANGRAM 编译笔记

    VS2013项目下载地址: http://pan.baidu.com/s/1gemrBrl 注册并运行: 使用管理员权限. 运行 REGISTER.BAT. 然后运行 TANGRAM.EXE 即可. ...

  5. LFS7.4编译笔记(1)

    由于第一次编译,花了不少时间,也不知道能不能成功,所以就没有记笔记,现在重新编译一次,这次不装U盘而是装到我的移动硬盘上面.步骤差不多,因为我感觉硬盘的速度会比U盘快. 至于LFS的优点,我就不多说了 ...

  6. JAVA代码反编译笔记

    最近有个朋友说有个java弄的软件是从朋友处拿来的,由于进行了网卡地址绑定,不修改网卡地址无法使用,叫我看看有无办法破解,之前都很少玩这些东西,本着帮忙的心态,尝试了下,便有了一下的笔记内容. 1.使 ...

  7. java动态编译笔记

    1 前言 Java的动态编译知识,真真在实际开发中并不是经常遇到.但是学习java动态编译有助于我们从更深一层次去了解java.对掌握jdk的动态代理模式,这样我们在学习其他一些开源框架的时候就能够知 ...

  8. apk反编译、smali修改、回编译笔记

    最近下了一个apk程序,但是一启动会弹出一个流氓广告.这个广告不是原厂商加的,而是有人在原有apk程序的基础上,加了一个壳,让apk先启动他加的广告,再启动原来的程序,很恶心.于是想去掉它. 试了几个 ...

  9. LFS7.4编译笔记(2)

    上一篇我们已经搭建好了临时系统,这一篇我们就开始正式构建我们的最终LFS系统. 首先切换到root,准备虚拟内核文件系统并挂载: su - export LFS=/mnt/lfs mkdir -pv ...

随机推荐

  1. Codeforces Round #508 (Div. 2) C D

    C: C - Gambling 给你两个数列  每一回合A可以选择从第一个序列里面选一个数或者清除第二个序列里面选一个数 同理B能从第二序列里面选数或者清除第一个序列里面一个数 然后 求A所选的数之和 ...

  2. 用go语言实现线程池

    代码放在 https://github.com/bigben0123/workerPool 安装完go软件后.执行目录中的install.cmd即可.

  3. C# Winform ListView控件

    一.ListView: 1.视图改为为Detalis: 2.编辑列,每添加一个添加一列,右侧属性Text改列名,停靠位置,列头的长度等等: 3.右侧属性,点开Iteme,添加ListViewItem集 ...

  4. Could not install the app on the device, read the error above for details. Make sure you have an Android emulator running or a device connected and have set up your Android development environment:

    Administrator@DESKTOP-EHCTIOR MINGW64 /d/react-native-eyepetizer (master) $ react-native run-android ...

  5. day02作业

    1.判断下列逻辑语句的True,False. 1),1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 tru ...

  6. Day28--Python--网络通信协议 tcp与udp下的socket

    昨日内容回顾: 1. CS架构 服务端客户端架构 软件CS架构: 京东,淘宝,QQ,微信,暴风影音,快播 硬件CS架构: 打印机 服务端: 提供服务的 客户端: 享受服务的 BS架构: 浏览器和服务端 ...

  7. hdu 4283"You Are the One"(区间DP)

    传送门 https://www.cnblogs.com/violet-acmer/p/9852294.html 题意: 有n个屌丝排成一排,每个屌丝都有一个不开心值a[ i ]( i=1,2,3,.. ...

  8. Gym - 101755G Underpalindromity (树状数组)

    Let us call underpalindromity of array b of length k the minimal number of times one need to increme ...

  9. urllib 学习二

    编码解码: python2 用法: urllib.urlencode() 编码 urlparse.parse_qs() 解码 python3 用法: urllib.parse.urlencode() ...

  10. Tomcat记录-tomcat常用配置详解和优化方法(转载)

    常用配置详解 1 目录结构 /bin:脚本文件目录. /common/lib:存放所有web项目都可以访问的公共jar包(使用Common类加载器加载). /conf:存放配置文件,最重要的是serv ...