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 ...
随机推荐
- 商品详情页系统的Servlet3异步化实践
http://jinnianshilongnian.iteye.com/blog/2245925 博客分类: 架构 在京东工作的这一年多时间里,我在整个商品详情页系统(后端数据源)及商品详情页统一 ...
- js 刷新
方法一: location.reload 重新加载 location.reload(); 如果该方法没有规定参数,或者参数是 false,它就会用 HTTP 头 If-Modified-Since 来 ...
- ONI无法启动: Uh oh! Unable to launch Neovim...
问题描述 在终端中是可以打开nvim的,ONI无法正确找到位置 解决方法 修改配置文件,指定nvim的路径 终端中输入which nvim定位所在位置,这里返回的结果是/usr/local/bin/n ...
- JavaScript(JS)之Javascript对象DOM之增删改查(四)
创建节点:var ele_a = document.createElement('a');添加节点:ele_parent.appendChild(ele_img);删除节点:ele_parent.re ...
- MySQL事务,事务隔离级别详解
1.什么是事务 指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行. 2.事务的4个特性 原子性(Atomicity).一致性(Consistency).隔离性(Isolatio ...
- MySQL经典查询场景
一.设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).用SQL语句创建四个表并完成相关题目. 表结构如下 #建学生信息表 ...
- MySQL表结构的优化和设计
仅供自己学习 结论写在前面: 1.给字段选取最合适的数据类型 2.数据类型的宽度尽可能的小 3.给where条件的字段设置索引 4.允许部分数据冗余 5.字段要尽可能的设置为not null,特别 ...
- Codeforces Round #523 (Div. 2) B Views Matter
传送门 https://www.cnblogs.com/violet-acmer/p/10005351.html 这是一道贪心题么???? 题意: 某展览馆展览一个物品,此物品有n堆,第 i 堆有a[ ...
- python之迭代器、生成器与面向过程编程
目录 一 迭代器 二 生成器 三 面向过程编程 一.迭代器 1.迭代器的概念理解 ''' 迭代器从字面上理解就是迭代的工具.而迭代是每次的开始都是基于上一次的结果,不是周而复始的,而是不断发展的. ' ...
- 一键开启MacOS HiDPI
完整文件下载:一键开启MacOS HiDPI 引言 作为一个黑苹果用户,追求黑果的体验是当然的,当各个硬件都驱动完善后,要做的就是细节的优化了,毕竟装上是拿来用的,可不能因为体验差苦了自己啊.机器毕竟 ...