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 之类的

  • 相关阅读:
    为何与0xff进行与运算
    智能指针学习笔记
    linux下多线程编程
    redis源码分析之内存布局
    spring
    java
    程序员进修之路
    散列类型(hash)
    字符串类型
    Jmeter使用Websocket插件测试SingalR,外加还有阿里云PTS的Jmeter原生测试爬坑日志。
  • 原文地址:https://www.cnblogs.com/mattins/p/11132924.html
Copyright © 2011-2022 走看看