学习D语言有一段时间了,一直对D语言库、D语言工程的编译辅助工具不是太满意。
用过bud, dsss, 现在DWT2的Frank则用Ruby的Rake来编译DWT2库,难道又要去学Ruby,为了编译D语言又多学一种语言?
http://www.d-programming-language-china.org/bian-yi-dwin-fang-fa/以前我一直用dsss编译D语言库DWin http://dwin.d-programming-language-china.org/, 但是dsss的编译速度很慢,在D语言编译器dmd的早期版本,不能直接编译lib, 虽然对dsss的编译速度不满意,也只能用。
但现在dmd已经直接可以编译D语言库了,也就是加上-lib参数,而且编译速度很快,是dsss不能相比的。因此,我们现在需要的只是辅助dmd编译的第三方工具。
用GNU Make,可以用最简单的方法,最快的速度编译出DWin库。当然你也可以不编译,DWin的lib目录里就有:
dwin.lib //release
dwin-debug.lib //debug
你直接用就是了。不过我们始终要学会自己编译库。
要用GNU Make编译DWin, 可以按照以下步骤:
你要有一个GNU Make程序
或者就用D语言编辑器SciTE4D http://scite4d.d-programming-language-china.org/安装目录下的mingw32-make, 并把make所在路径加入到Windows path 环境变量。准备好GNU find
Windows下的移植版本是find.exe, 为避免和Windows自己的find重名,我改成了gnufind.exe, 同样要把gnufind.exe所在路径的目录加入Windows path 环境变量。gnu find工具包下载:
http://gnuwin32.sourceforge.net/packages/findutils.htm把下面的内容保存为:…\dwin\Makefile
Windows下文件往往有后缀,Makefile是没有后缀的,也就是一个没有后缀的文本文件。
要注意的是dmd前面有一个tab,而不是空格, 这是Makefile的基本常识,不太熟悉Makefile的还要找相关文章稍微了解一下。# Author: D语言中国 http://www.d-programming-language-china.org/ src =$(shell gnufind . -name "*.d") debug=-debug -g -w release=-release -O all : dwin.lib dwin-debug.lib dwin.lib : $(src) dmd $(src) -lib $(release) -oflib\$@ dwin-debug.lib : dmd $(src) -lib $(debug) -oflib\dwin-debug.lib运行命令提示行执行编译
编译release版本是在dwin目录内,在命令行中打入:
编译debug版本是在diwn目录内,命令行中打入:mingw32-make dwin.lib
mingw32-make dwin-debug.lib
分秒之间,dwin编译完成,文件保存在lib目录内。
Windows命令行参数有长度限制,因为dwin模块不多,可以直接在命令行中编译。如果文件很多,就要把编译参数保存为response文件,再用下面的命令编译:
dmd @rsp
另外,发现直接用dmd 1.042编译DWin库,在链接时有时会发生optlink错误,用dsss 0.75和dmd 1.037编译出DWin库,使用时就没有问题。到底是什么原因还不知道。
http://www.d-programming-language-china.org/bian-yi-dwin-fang-fa/编译D语言库DWin的简单方法
