zoukankan      html  css  js  c++  java
  • UBT编译记录

    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项目编译时会先调用构建工具,再跟据平台调用相应的编译器,以及添加自己的一些特殊定义。

    Build.cs 杂项API

    一个Build.cs 对应一个模块

    • 获取目录
      using System.IO;
      ModuleDirectory //模块目录
      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 要注意使用的路径就是拷贝后路径

    模块开发相关

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

    运行

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

    插件

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

    使用UBT创建VS项目

    "C:/UnrealBuildTool.exe" -projectfiles -project="C:/A1.uproject" -game -engine -progress -2017

    其他

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

  • 相关阅读:
    hibernate的缓存机制
    [poj 3159]Candies[差分约束详解][朴素的考虑法]
    POJ 2773 Happy 2006
    给定一个循环链表,实现一个算法返回这个环的开始结点
    使用jQuery创建模态窗口登陆效果
    实战数据结构(3)_两个单链表间的合并操作
    sql的强大功能(看一条sql解决的复杂业务)
    uva 10905 Children's Game (排序)
    JFinal学习 & Gradle配置续 & Tomcat配置
    Gradle项目学习 & HttpAsyncClient学习 & CountDownLatch学习
  • 原文地址:https://www.cnblogs.com/mattins/p/11132924.html
Copyright © 2011-2022 走看看