综合二区_欧美成人综合_欧美成人二区_a黄视频_亚洲视频在线播放_一区二区三区视频免费看

当前位置:首页 > 网站旧栏目 > 学习园地 > 设计软件教程 > 用Rant自动化D语言程序构建

用Rant自动化D语言程序构建
2010-01-13 21:07:23  作者:  来源:

用Rant自动化D语言程序构建
    
上回说到 Rank 这个 Ruby 世界最广泛使用的构建工具在 Windows 下有大bug,根本不能运行。Python的scons太慢、自动得过了头,造成定制起来很麻烦.....
最终,我找到了一个叫 Rant 的Ruby构建工具,用起来几乎与 Rank一样,而且特性更多,最重要的是能在 windows 下面正常运行。因此我强烈推荐各位D语言的粉丝使用Rant作为软件构建工具,放弃那些不成熟的IDE。用Rant的好处是还能顺带学习一下Ruby语言,对于像我一样的Ruby&&D双料菜鸟,这是不可多得的学习机会。

如果没有Ruby,请先下载安装 Ruby。 然后在控制台中输入:gem --remote install rant,系统将会自动安装并配置好 rant
下面是我写的 for DMD 万用 Rantfile 模板,只要把它放到你的D程序所在的目录,稍加修改就能使用。

RANTFILE 代码
# The Rantfile for DMD

# Author: oldrev (wstringgmail.com)
# No copyrights, use it freely

import "AutoClean"

#require "rant/filelist"

# 请自行定义下面几行

NAME = "foo.exe" # 可执行文件名
SRC = "./src" # D 源程序在 ./src 目录下(包括子目录)
LIBS = ["advapi32.lib", "uuid.lib", "ole32.lib"] # 程序用到的附加 .lib
DEBUG_FLAGS = "-debug -g"
RELEASE_FLAGS ="-release -O"

DC = "dmd.exe"
IMPLIB = "implib.exe"
PROG = "#{NAME}"
PROG_DEBUG = "#{NAME}"

SRCS = Rant::FileList[SRC + "/**/*.d"]
OBJS = SRCS.ext "obj"
OBJS_DEBUG = SRCS.map {|file| file.sub /\.d$/, "_debug.obj"}

DEFS = Rant::FileList[SRC + "/**/*.def"]
ILIBS = DEFS.ext "lib"

task :default => :debug
task :release => :program
task :debug => :program_d


def dolink(target, t)
sys.sh "#{DC} -of#{target} #{t.prerequisites.join(' ')} #{LIBS.join(' ')}"
end

task :program => OBJS.entries + ILIBS.entries do |t|
dolink PROG_DEBUG, t
end

task :program_d => OBJS_DEBUG.entries + ILIBS.entries do |t|
dolink PROG, t
end

gen Rule, ".obj" => ".d" do |t|
sys.sh "#{DC} #{t.source} -c -I#{SRC} #{RELEASE_FLAGS} -of#{t.name}"
end

gen Rule, "_debug.obj" => ".d" do |t|
sys "#{DC} #{t.source} #{DEBUG_FLAGS} -c -I#{SRC} -of#{t.name}"
end

gen Rule, ".lib" => ".def" do |t|
# DigitalMars 的 implib.exe 程序不认识 '/' 分割的路径
lib = t.name.gsub("/", "\\")
dotdef = t.source.gsub("/", "\\")
sys.sh "#{IMPLIB} /system #{lib} #{dotdef}"
end

task :clean do
sys.rm_f OBJS
sys.rm_f OBJS_DEBUG
sys.rm_f ILIBS
sys.rm_f PROG
sys.rm_f PROG_DEBUG
end

此 Rantfile 能扫描源程序目录的所有.d文件,并自动编译连接。如果源程序目录存在 .def 的 DLL 导入库定义文件的话,也会自动生成 .lib,并链接到程序中。

rant 的用法与make基本一致:
rant debug //建立 debug 版程序
rant release // 建立 release 版程序
rant clean // 清理零时文件
rant -f build.rb //指定build.rb为rantfile,而不是当前目录下的 Rantfile

更多信息请登陆http://61.191.27.74:802/ 最后,欢迎加入http://61.191.27.74:802/的会员


安徽新华电脑学校专业职业规划师为你提供更多帮助【在线咨询
主站蜘蛛池模板: 成人a视频片观看免费 | 欧美日韩精品一区二区三区 | 91啦在线视频 | 亚洲www啪成人一区二区 | 亚洲老板91色精品久久 | 久久免费国产精品1 | 国产精品毛片一区二区三区 | 天天添夜夜操 | 天天爽夜夜爽人人爽一区二区 | 国产区久久 | 午夜一级福利 | 国产成人啪午夜精品网站男同 | 在线视频亚洲精品 | 一区二区成人影院 | 亚洲四区 | 久久精品国产一区二区三 | 久久1区2区3区 | 国产成人精品a视频一区www | 夜草影院 | 99精品久久久 | 人人干影院 | 亚洲欧美男人天堂 | 99色热| 中文字幕久久一区 | 免费观看福利视频 | 91成人免费视频 | 91视频最新网站 | 夜夜春亚洲嫩草一区二区 | 九九热免费在线视频 | 久久久二区 | 91大神视频网站 | 热久久最新地址 | 91大片| 成人av一区二区亚洲精 | 国产成人免费观看视频 | 一区二区三区不卡免费视频97 | 变态肉污np高h公交bl | 久久久久久久久久久久网站 | 中文一区 | 我要色综合网 | 男人精品天堂 |