[分享] unreal engine 4 跨平台建置

看板C_and_CPP (C/C++)作者 (天亮damody)時間12年前 (2014/05/21 14:43), 12年前編輯推噓1(106)
留言7則, 3人參與, 最新討論串1/1
我要分享的是 unreal engine 4 的建置方式: 這是unreal團隊抓 include 跟 import 的 regex 以下這兩段是c# static Regex CPPHeaderRegex = new Regex ( "(([ \t]*#[ \t]*include[ \t]*[<\"](?<HeaderFile>[^\">]*)[\">][^\n]*\n*)| ([^\n]*\n*))*" , RegexOptions .Compiled | RegexOptions .Singleline | RegexOptions . ExplicitCapture ); static Regex MMHeaderRegex = new Regex( "(([ \t]*#[ \t]*import[ \t]*[<\"](?<HeaderFile>[^\">]*)[\">][^\n]*\n*)| ([^\n]*\n*))*" , RegexOptions .Compiled | RegexOptions .Singleline | RegexOptions . ExplicitCapture ); unreal engine 4 使用 UnrealBuildTool(UBT) 這一個他們自己用c#寫的工具 來建置所有專案,一開始我覺得很怪,那他們要怎麼編譯 以前的跨平台工具像cmake,都需要自己寫一個build rules 那他們呢? 寫了大量的 cs 檔來描述如何編譯 module(obj) 用 xxx.Build.cs exe dll lib a 用 xxx.Target.cs 使用自定義的 DynamicCompilation 包裝內建的函數 使用dotnet v4 來編譯 把指定或預設的source path裡面所有的cs檔抓出來編譯 編譯完後再讀進來看有沒有要編譯的模組 unreal 團隊把編譯規則寫在cs檔中 而 linux, mac 則用 mono 的 dotnet 來編譯執行 還自己寫解 include 檔相依性的程式 自己合成編譯指令呼叫 cl.exe 編譯 mac上當然會轉換成對應的參數 unreal 團隊為了開發一個遊戲引擎 寫了一個類似 cmake, bjam 的 c#版 make 工具 寫了一個跨平台的UI Framework 寫了錯誤回報程式 SymbolDebugger 自製pak工具 建立了跨平台的c#動態呼叫機制 ...... 真的獲益良多。 就算沒有要往遊戲界發展, 光是看他的code就有在吸收高手功力的感覺。 由於他們自定了自己的make工具, 所以可以自定義的選擇自己需要的cpp, 再編譯連結,可以從他們的介紹影片了解這個流程。 遊戲引擎=>開新專案=>遊戲引擎產生c++ class程式碼(.h .cpp) =>遊戲引擎呼叫cl.exe link.exe生成dll=>dynamic link 進編輯器執行 在 gamedesign 看到的 Why C++ for Unreal 4? http://ppt.cc/LqAH 在這個project中,感受到了他們的精神, 不過他們的成員都很喜歡使用新東西, 程式碼在windows下要 VS 2013 才編的過。 -- 標題 [趣事] 說服老媽進電影院看少年PI → milkfox:我的老虎哪有這麼可愛 老虎也要談戀愛 人X虎 11/28 10:18 → milkfox:鄰座的怪老虎 元氣少年漂流虎 漂流床的寵物老虎 11/28 10:19 → milkfox:少年與老虎漂流 絕園的人與虎 PSYCHO_TIGER TIGER_NOTES 11/28 10:22 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.118.175.39 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1400654601.A.E9B.html ※ 編輯: damody (140.118.175.39), 05/21/2014 14:44:08

05/23 02:58, , 1F
這不奇怪啊 Qt也是這樣搞的 :D
05/23 02:58, 1F

05/23 02:59, , 2F
只是Qt相對單純的多 單純把code做一次pre-pre-compile
05/23 02:59, 2F

05/23 12:13, , 3F
回樓上,我用qt有太多慘痛的經驗 一直不是很喜歡qt
05/23 12:13, 3F

05/23 13:02, , 4F
qt5.5用用看 我很推薦喔 :D
05/23 13:02, 4F

05/24 04:23, , 5F
QT 哪來的5.5?
05/24 04:23, 5F

05/24 05:02, , 6F
er...現在才看到 -_-; 純粹的手誤打錯字 是5.3
05/24 05:02, 6F

05/24 18:32, , 7F
推 感謝分享
05/24 18:32, 7F
文章代碼(AID): #1JV4i9wR (C_and_CPP)
文章代碼(AID): #1JV4i9wR (C_and_CPP)