UE4源码Build上传Perforce

UE4每次升级个版本总是要提交大量文件到Perforce, 是件很麻烦的事. 我们的引擎编译好了会连同Binaries一起上传, 美术和策划都可以直接使用跟程序一样的版本. 这样的话, Perforce上的引擎就需要有这些注意事项:

  • 引擎目录完全包含所有代码和引擎依赖资源
  • 引擎编译输出的dll, exe等也都需要提交, 保证策划和美术能够直接拉取引擎版本
  • 引擎编译过程中会写入的文件, 需要改成writable, 不然程序开发时编译会出错
  • 需要避免上传不必要的文件, 如Intermediate目录, exp, obj等
  • [可选]如果需要定位美术和策划的引擎崩溃, 也需要上传pdb文件

如果使用P4V GUI客户端来进行这些操作, 在有大量文件的情况下, 会经常性卡死, 再说靠人力一个个去用鼠标去筛选所有附合要求的文件是件很烦人且容易出错的操作. 在这里就记录一下整个过程, 免得下次升级时又要重新找命令规则步骤之类的:

  1. 从github拉取UE4的release版本
  2. 拷贝整个目录到Perforce Workspace, 需要避免.git文件夹也拷过来
  3. 执行Setup.bat下载引擎依赖资源
  4. 上传干净的引擎目录到Perforce
  5. 因为有些编译过程中的exe和dll等在上传后变成了只读属性, 需要改成writable的:
p4 edit -t binary+w .\Engine\Binaries\...\*.dll
p4 edit -t xbinary+w .\Engine\Binaries\...\*.exe
p4 edit -t text+w .\Engine\Binaries\...\*.config
  1. 生成sln进行编译, 这个过程中会在Binaries和Plugins下面生成exe和dll等文件
  2. 由于Binaries和Plugins下面是有子目录的, 所以我们需要递归提交这些文件, 并加上writable标记
for /f "delims=" %a in ('dir .\Engine\Binaries\*.dll /b /s') do p4 add -t +w %a
for /f "delims=" %a in ('dir .\Engine\Binaries\*.exe /b /s') do p4 add -t +w %a
for /f "delims=" %a in ('dir .\Engine\Binaries\*.target /b /s') do p4 add -t +w %a
for /f "delims=" %a in ('dir .\Engine\Binaries\*.modules /b /s') do p4 add -t +w %a
for /f "delims=" %a in ('dir .\Engine\Plugins\*.dll /b /s') do p4 add -t +w %a
for /f "delims=" %a in ('dir .\Engine\Plugins\*.modules /b /s') do p4 add -t +w %a

因为p4 add命令是不支持路径中的”…”的, 所以需要借助dir命令递归遍历子目录下的文件, 再使用for循环针对每个文件执行add操作. 如果要把这些命令写到批处理文件里, 注意需要把%a改成%%a.

  1. 最后, 再提交一次, 完成

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java技术栈

10个Eclipse珍藏插件推荐

1、Open Explorer 打开资源管理器插件,这是一个从Eclipse里面可以直接定位打开windows资源管理器文件的插件,这个版本的插件在最新的Ecl...

3698
来自专栏Java技术分享

浅谈spring的事务管理作用

事务就是对一系列的数据库操作进行统一的提交或回滚操作,比如说做一个转账功能,要更改帐户两边的数据,这时候就必须要用事务才能算是严谨的做法。要么成功,要么失败,保...

2716
来自专栏程序猿DD

Spring Cloud构建微服务架构:服务容错保护(Hystrix依赖隔离)【Dalston版】

前言在上一篇《Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)》中,我们已经体验了如何使用@HystrixCommand来为一个依...

2039
来自专栏后端云

实时操作系统

一般的linux都是GPOS(通用)内核。GPOS是不保证实时的,但是对于大多数应用程序来说是没有问题的。GPOS可以充分利用物理资源。但在实时性要求性比较高的...

2887
来自专栏阿杜的世界

Java Web技术经验总结(二)

2013
来自专栏EAWorld

对没有监控的微服务Say No!

目录: 一、监控简介 二、监控策略 三、总结 一、监控简介 微服务的特点决定了功能模块的部署是分布式的,大部分功能模块都是运行在不同的机器上,彼此通过服务调用...

4605
来自专栏小巫技术博客

Bugly使用篇之Java错误堆栈还原

1573
来自专栏菩提树下的杨过

intellij idea 高级用法之:集成JIRA、UML类图插件、集成SSH、集成FTP、Database管理

之前写过一篇IntelliJ IDEA 13试用手记 ,idea还有很多高大上的功能,易用性几乎能与vs.net媲美,反正我自从改用idea后,再也没开过ecl...

4355
来自专栏cloudskyme

企业级集成和ESB

ESB是什么? ESB是一个主要依赖XML消息交换的企业级消息系统,这种消息继而被智能的通过一种非集中式的架构路由和转换。 开源的ESB? Mule,Servi...

5667
来自专栏耕耘实录

解决一个MySQL登录报ERROR 2002 (HY000)错的问题

版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢

1573

扫码关注云+社区

领取腾讯云代金券