前言
一个游戏引擎的build system应该是什么?如果你能回答这个问题,说明你能找到一个12k的程序员开发工作。
本文将探讨三个引擎的不同Build的组成和设计理念。
这三个引擎分别为:
- UnrealEngine(引擎开源):,自研BuildSystem
- Unity(引擎闭源):基于开源项目改造的自研BuildSystem(开源)
- CryEngine(引擎开源):基于CMake
CMake
首先讨论CMake,对于CMake有个灵魂问题是:
CMake 也配叫做 Build system?
那么问题是:什么是Build System?
让我们先搁置CMake的讨论,先探索一下微软那学了就找不到工作的技术栈所用的BuildSystem:MSBuild
MSBuild
msbuild就是一个
开源项目github.comBuild System,尽管他把自己叫做Build Engine。
如果你使用过Visual Studio开发过cpp/C#项目。当你对项目发起编译时,实际上是给操作系统发起了
msbuild 项目文件名
的进程请求。Visual Studio将重定向程序的输出到Visual Stuido的输出中。
对于一个Cpp项目来说,一次Build过程只有编译和链接两个步骤。MSBuild执行这两个步骤的方式是发起
cl 源文件 编译参数<