UE4 编译笔记
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 编译笔记的更多相关文章
- LFS7.4编译笔记(3)
在第一部分,我们编译了一个工具链及临时系统,然后在第二部分我们chroot到/mnt/lfs下面,利用临时系统的工具编译了我们最终的LFS系统.不过此时,我们的LFS系统还是不完整的,因为我们还没有安 ...
- MRuby 编译笔记
专注于嵌入式脚本的MRuby在Windows下的编译笔记: 环境: OS: Windows 8.1, 使用 VS Express 2013 for Desktop. 材料: MRuby : 下载源码就 ...
- 支持源码单步调试QT库编译笔记
支持源码单步调试QT库编译笔记 编译环境:windows 10 编译工具:mingw_4_4_0 Qt源码版本:qt-everywhere-opensource-src-4.8.5(下载地址:http ...
- INSIDE COM 最后一章例子 TANGRAM 编译笔记
VS2013项目下载地址: http://pan.baidu.com/s/1gemrBrl 注册并运行: 使用管理员权限. 运行 REGISTER.BAT. 然后运行 TANGRAM.EXE 即可. ...
- LFS7.4编译笔记(1)
由于第一次编译,花了不少时间,也不知道能不能成功,所以就没有记笔记,现在重新编译一次,这次不装U盘而是装到我的移动硬盘上面.步骤差不多,因为我感觉硬盘的速度会比U盘快. 至于LFS的优点,我就不多说了 ...
- JAVA代码反编译笔记
最近有个朋友说有个java弄的软件是从朋友处拿来的,由于进行了网卡地址绑定,不修改网卡地址无法使用,叫我看看有无办法破解,之前都很少玩这些东西,本着帮忙的心态,尝试了下,便有了一下的笔记内容. 1.使 ...
- java动态编译笔记
1 前言 Java的动态编译知识,真真在实际开发中并不是经常遇到.但是学习java动态编译有助于我们从更深一层次去了解java.对掌握jdk的动态代理模式,这样我们在学习其他一些开源框架的时候就能够知 ...
- apk反编译、smali修改、回编译笔记
最近下了一个apk程序,但是一启动会弹出一个流氓广告.这个广告不是原厂商加的,而是有人在原有apk程序的基础上,加了一个壳,让apk先启动他加的广告,再启动原来的程序,很恶心.于是想去掉它. 试了几个 ...
- LFS7.4编译笔记(2)
上一篇我们已经搭建好了临时系统,这一篇我们就开始正式构建我们的最终LFS系统. 首先切换到root,准备虚拟内核文件系统并挂载: su - export LFS=/mnt/lfs mkdir -pv ...
随机推荐
- 用go语言实现线程池
代码放在 https://github.com/bigben0123/workerPool 安装完go软件后.执行目录中的install.cmd即可.
- JBoss/Wildfly 配置SQLserver服务器
JBoss/Wildfly 配置SQLserver服务器 http://blog.csdn.net/haitaolang/article/details/60467118 wildfly standa ...
- 没有上司的舞会 codevs 1380
上树DP,记忆化搜索. 本题老师讲的方法是直接树形DP,但是由于我对树并不够了解,什么dfs也不想尝试(虽然感觉自己可以搞),于是搞了个结构体存点以及该点的信息,用f[i][j]作为记忆化数组.以后最 ...
- zabbix监控URL
选在相应主机,并添加Web监控 按照方式新建Web场景 注意: 名称统一规则:web_check_相应的域名 应用集:新建一个,名称为“web状态” 更新间隔:改为30s,默认为1m 尝试次数:改为2 ...
- zabbix自动发现
zabbix3.4 Discovery自动发现教程 Zabbix 创建发现规则创建发现规则配置 ---- 自动发现 ---- 创建发现规则 看一个例子 这样发现规则就没有问题了,下面让主机自动加入到某 ...
- MySQL 之 库操作,表操作
系统数据库 information_schema :虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息.列信息.权限信息.字符信息等 mysql:核心数据库,里面包含用户.权限.关键 ...
- Mac上在终端上解压与压缩
1.安装rar 1.brew install unrar 2.unrar -version 3.进入需要解压的文件目录下,unrar x 文件夹名.rar 1.tar -xvf [file.tar.g ...
- php小项目踩坑以及其中的注意点(第二篇)
用户登录页面 1.通过数据库验证用户名和密码(可以将里面要用到的数据库信息,放入到一个config文件中) <?php define('DB_HOST','localhost'); define ...
- phpcms 标签含义大全
{template "content","header"} ---------- 调用根目录下phpcms\template\content\header ...
- 缓存淘汰策略之LRU
LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”. 1. 新数据插入到链表头部: ...