最近学习gtkD的编程,
用dmd进行编译时,
需要把所有的需要的lib文件都写到参数列表中才能成功编译,
否则就出现“符号未定义”的错误,
根据群组里的“betty_betty2008”的推荐,
我找了一下bud的使用方法,
根据下面这个资源,
[url]http://www.iteye.com/wiki/dlang/872-Build编译工具学习笔记:常用命令参数和BRF文件[/url]
我找到了编译程序的方便途径。
官网URL:http://www.dsource.org/projects/build/
下面做一个记录,
以便日后查阅。
bud是编译D源程序的一个工具,
它可以根据代码中的import内容,
自动寻找obj或lib文件进行编译和链接,
所以,
省去了书写dmd命令进行编译时的各种依赖关系。
注:下面只是我自己的管理方式。
[b]步骤一:[/b]
需要把所需要的lib文件统一都放到一个目录中,
[quote]比如:
E:\dm_soft\dmd2\windows\lib[/quote]
[b]步骤二:[/b]
将编译时所需要的di("include")文件,
或D源文件,
说白了,就是import需要用到的文件,
放到自己希望维护的目录。
[quote]比如:
我把SQLite3-D的"include"文件,
都放到了这里:
E:\dm_soft\dmd2\windows\import\SQLite3-D[/quote]
[b]步骤三:[/b]
将lib目录追加到dmd2\bin\sc.ini文件中的LIB参数中,
[quote]修改前:
LIB="%@P%\..\lib";\dm\lib
修改后:
LIB="%@P%\..\lib";\dm\lib;"%@P%\..\lib";[/quote]
目的:
为了在编译连接时,
可以在这些目录中自动寻找所需的lib文件。
[b]步骤四:[/b]
使用bud命令进行代码的编译:
bud test.d -IE:\dm_soft\dmd2\windows\import\SQLite3-D -odbin -ofbin\DDT.exe -cleanup
各参数说明:
-I :让编译器知道"include"文件的所在目录
-od :编译后的输出文件的路径。例子中是在运行bud命令时所在目录中的bin文件夹
-of :编译后生成的文件名。例子中是在运行bud命令时所在目录中的bin文件夹中,生成DDT.exe文件
-cleanup:将编译过程中生成的obj等文件清空。即,不在-od指定的目录中生成obj等文件
至此,
就结束了文件的编译工作,
不用在编译的命令中,
指出所需的lib、obj等文件了。
[b]补充:[/b]
另外,
bud和dmd命令一样,
也支持读取文件的方式进行编译,
将例子中的命令内容,
放到一个名叫build.brf的文件中:
-IE:\dm_soft\dmd2\windows\import\gtkD\include\d
-odbin
-ofbin\DDT.exe
-cleanup
然后,
运行下面的命令也可以得到和之前相同的结果:
bud test.d @build.brf