越来越多的人选择用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即可。
问过周边友人是否知道这一功能,都说知道,只是没有广播而已,害我研究很久……