越來越多的人選擇用Mac或者Linux環境進行跨平臺項目開發。但是仍然有大部分人習慣于在Windows環境下進行開發,畢竟Windows在各方面使用還是較為方便,特別像文件版本管理(Git,SVN等)
在跨平臺下開發游戲或軟件,就需要有一套方便的自動化工具。Windows下需要使用批處理,雖然有PowerShell加持,但這東西學了也不靠譜,只有一個平臺能用。大家還是習慣Linux Shell。連Mac平臺都可以用Shell,Windows上要做自動化腳本就顯得非常尷尬。
我曾經在項目中使用go編寫了一套將配置轉為批處理和Linux Shell的工具。使用過程較為復雜,但是能跨平臺進行表格導出和協議編譯等工作。
但是,這個工具還是需要對不同的平臺編寫多套模板進行代碼生成,非常繁瑣。如果有一套跨平臺的Shell,編寫一次就可以跨平臺運行那該多好。
查閱資料后,一共有幾個方案:
使用Python作為自動化工具 這個方案其實就是使用python把批處理和Shell干的事情用代碼來解決。但前提是要重新學習Python,也需要一部分熟悉簡單的Python語法,人為學習成本較高,也比較費事。
自己編寫一套獨立的自動化工具 這個方案需要長時間的適配過程,差什么指令補什么指令,對項目進度有一定干擾。
自己編寫Linux Shell的解釋器 這個就更難了,要做到100%兼容,基本不可能。
- 使用Cygwin和Mingw 需要一個微型運行時進行Linux Shell的解釋,msys大概是18M左右,可行性較高。
在研究Cygwin和Mingw如何整合的過程中,我誤操作點擊了一個sh后綴的Linux Shell,這是我希望讓Mingw運行的Shell。結果呢,sh后綴的文件居然能在Windows下運行。我馬上編寫了一系列的例子,發現幾乎完全兼容常用的Shell指令。 經過研究,我發現Windows下能運行sh文件是由Git自帶的msys2提供的。MSYS2 (Minimal SYStem 2, http://www.msys2.org/) 是一個MSYS的獨立改寫版本,主要用于 shell 命令行開發環境。同時它也是一個在Cygwin (POSIX 兼容性層) 和 MinGW-w64(從"MinGW-生成")基礎上產生的,追求更好的互操作性的 Windows 軟件。
那就是說,只要安裝了Git(https://git-scm.com/),那么就可以在Windows下直接運行Linux Shell,只需要將文件后綴命名為sh即可。
問過周邊友人是否知道這一功能,都說知道,只是沒有廣播而已,害我研究很久……