網上主要的原始碼有兩個版本 unity 4.3.1f1 和 unity 4.7.1f1 ,但其實基本都是 4.3.1 的版本,這裡以 unity 4.3 為例進行原始碼編譯,但編譯之前需要安裝一些工具軟體:
將原始碼包放在磁碟根目錄下,路徑太深可能會出現解壓時報錯(原因是檔名太長導致的),例如這裡我的存放目錄為 f:\unity4.7.1f1_source ;
進入工程目錄,雙擊 jamcreateworkspace.bat 指令碼,執行完畢後在 projects 目錄下會多出乙個 jamgenerated 目錄;(假如沒有此指令碼,也可以使用在當前目錄下使用命令列執行 perl build.pl --prepare 來生成);
然後使用 vs 開啟 projects/jamegenerated/_workspace.vs2010_/alltarget.sln ,在解決方案資源管理器中選中 editor 解決方案,右鍵 生成 ;
構建完成後,構建結果在 build/windowseditor 目錄下,雙擊 unity.exe 啟動編輯器即可啟動編輯器。
在 external 目錄下有很多依賴庫,有些是以壓縮包的形式存在的,但編譯的時候可能出現壓縮包無法自動解壓縮的情況,要麼手動解壓縮這些包,要麼就使用自動化工具批量解壓縮,顯然後者要靠譜一些,可以避免遺漏。
其實這些壓縮包都是以 builds 命名的,字尾名為 .zip 、.7z 或這 .tar.gz 三種,這裡我直接用 qq 群友寫的乙個 python 指令碼實現解壓操作。但是需要安裝 7z.exe 並將其配置到系統環境變數中(確保可以在任何目錄下通過命令列呼叫),具體**如下(例如取名為 unzipextenalbuilds.py):
# -*- encoding: utf-8 -*-
import os
def unzip():
for path, dirs, files in os.walk(r"external"):
dir = os.path.join(path, "builds")
if os.path.isdir(dir):
continue
for ext in [".7z", ".tar.gz", ".zip"]:
fname = dir + ext
if os.path.exists(fname):
cmd = "7z.exe x " + fname + " -o" + dir
print(cmd)
os.system(cmd)
if __name__ == "__main__":
unzip()
將此指令碼放在工程根目錄下,在命令列執行:
$ python unzipextenalbuilds.py
解壓完成後,再重頭走一遍上面的編譯步驟。
當如當前的系統是中文系統,然後在編譯時出現很多如下報錯:
c2220 警告被視為錯誤 - 沒有生成 "obj" 檔案
c4819 該檔案包含不能在當前**頁(936)中表示的字元。請將該檔案儲存為 unicode 格式以防止資料丟失
...解決方案:
修改 projects/jam/editor.jam 中第 360 行,插入 /wd4819 ,如下:
local vsflags = /wx /wd4251 ; //修改前
local vsflags = /wx /wd4251 /wd4819 ; //修改後
編譯時出現如下報錯:
c3861 "_xgetbv" :找不到識別符號
這是因為沒有安裝 visual studio 2010 sp1 ,在編譯 cpuinfo.cpp 時因找不到 _xgetbv 方法而導致報錯。
解決方案:
啟動編譯好的編輯器,彈出提示框:
這是因為許可管理導致的,因為在 unity 啟動時會聯網校驗許可資訊。
既然是要研究原始碼,最好是從源頭上解決,開啟 editor/src/licenseinfo.cpp ,修改兩個地方:
ref:
goole v8引擎編譯整合
size large 主頁 官方編譯嚮導 編譯需要注意的是google v8使用gyp編譯的 所以需要gyp svn co build gyp 另外還需要python 和cygwin svn co third party python 26 svn co third party cygwin 執行 ...
windows下編譯google v8引擎
v8引擎編譯還是比較方便的,只依賴python gyp cygwin 以下為編譯過程 簽出v8源 svn co 簽出cygwin svn co v8 third party cygwin 簽出python svn co v8 third party python 26 簽出gyp svn co v8...
Mac OS下V8引擎編譯方法
v8 的github位址 因為需要訪問到google的伺服器,所以下面做的一切都需要翻到牆外面。翻牆方法自行解決吧。v8的版本控制是有乙個叫depot tools的工具維護的,這個東西相當於的將git包了一層。具體安裝方法 mac 下編輯 bash profile檔案,在檔案最開頭新增下列 其中 u...