rbuild 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README +81 -0
- data/README.zh_CN +203 -0
- data/README.zh_CN~ +197 -0
- data/README~ +79 -0
- data/example2/Rakefile.rb +167 -0
- data/lib/plugins/rbuild_export_c.rb +78 -0
- data/lib/plugins/rbuild_export_targets_list.rb +49 -0
- data/lib/rbuild.rb +848 -0
- data/lib/rbuild_menuconfig.rb +397 -0
- metadata +61 -0
data/README
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
RBuild - a KBuild like software configure/build system by Ruby DSL.
|
2
|
+
-------------------------------------------------------------------
|
3
|
+
|
4
|
+
-- Introduction --
|
5
|
+
|
6
|
+
Rbuild is a KBuild like configure/build system, like KBuild, RBuild provide a menu driven configure interface for target software. RBuild take 'RConfig' files as input, generate target software configuration files by RBuild plugins, for example, the 'export_c' plugin generate C/C++ header config.h and Makefiles.
|
7
|
+
|
8
|
+
A RConfig's syntax looks more like KConfig, plus lots of ruby flavors. Since RConfig file actually is a ruby script, it could be very flexiable and powerful.
|
9
|
+
|
10
|
+
-- RConfig --
|
11
|
+
|
12
|
+
All RConfig instructions falls into four catalogs:
|
13
|
+
- organizing: 'menu', 'group'
|
14
|
+
- configuration: 'choice', 'config'
|
15
|
+
- property: 'title', 'default', 'help', 'range', 'depends', 'select', 'unselect' and 'property'
|
16
|
+
- file inclusion: 'source'
|
17
|
+
|
18
|
+
A Simple RConfig example:
|
19
|
+
|
20
|
+
title "Welcom to my software config system !"
|
21
|
+
menu "Package config" do
|
22
|
+
config :PACKAGE_A => "enable package A"
|
23
|
+
group "Package A options" do
|
24
|
+
depends :PACKAGE_A
|
25
|
+
config :PACKAGE_A_FUN_A => "function A"
|
26
|
+
config :PACKAGE_A_FUN_B => "function B"
|
27
|
+
end
|
28
|
+
config :PACKAGE_B => "enable package B"
|
29
|
+
choice :PACKAGE_B_PARAM => "select package B param" do
|
30
|
+
depends :PACKAGE_B
|
31
|
+
default 200
|
32
|
+
range 100, 200, 300
|
33
|
+
end
|
34
|
+
end
|
35
|
+
menu "RBuild Configuration" do
|
36
|
+
group "RBuild System Options" do
|
37
|
+
choice :RBUILD_SYS_CONFIG_FILE => "RBuild Configuration File" do
|
38
|
+
property :no_export # do not export this, it's for rbuild system internal.
|
39
|
+
default 'rb.config'
|
40
|
+
end
|
41
|
+
|
42
|
+
choice :RBUILD_PLUGIN_EXP_C_HEADER_FILE => "RBuild Export File" do
|
43
|
+
property :no_export # do not export this, it's for rbuild system internal.
|
44
|
+
default 'config.h'
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
Please have a look the RConfig file under 'example' folder, it almost explains everything about RConfig DSL.
|
50
|
+
|
51
|
+
|
52
|
+
-- Install --
|
53
|
+
|
54
|
+
1. Install Ruby interpreter (http://www.ruby-lang.org)
|
55
|
+
2. Copy 'scripts' directory into your target software package
|
56
|
+
3. Write your 'RConfig' files
|
57
|
+
4. Create a 'Rakefile' as:
|
58
|
+
require 'scripts/rbuild'
|
59
|
+
|
60
|
+
task :menuconfig do
|
61
|
+
rconf = RBuild::RConfig.new 'RConfig'
|
62
|
+
rconf.menuconfig()
|
63
|
+
end
|
64
|
+
5. at your target software package's root dir, run:
|
65
|
+
rake menuconfig
|
66
|
+
|
67
|
+
|
68
|
+
-- Project Home --
|
69
|
+
|
70
|
+
RBuild is hosted by SourceForge (http://www.sourceforge.net/projects/rbuild/)
|
71
|
+
RBuild's home page http://rbuild.sf.net/
|
72
|
+
|
73
|
+
|
74
|
+
-- LICENCE --
|
75
|
+
|
76
|
+
RBuild is released under GNU GPLv2.
|
77
|
+
|
78
|
+
Copy Right (c) 2008, Ricky Zheng <ricky_gz_zheng@yahoo.co.nz>
|
79
|
+
|
80
|
+
|
81
|
+
|
data/README.zh_CN
ADDED
@@ -0,0 +1,203 @@
|
|
1
|
+
RBuild - a KBuild like software configure/build system by Ruby DSL.
|
2
|
+
-------------------------------------------------------------------
|
3
|
+
|
4
|
+
-- 1 RBuild简介 --
|
5
|
+
|
6
|
+
RBuild是一个类似KBuild的软件配置和编译系统。Linux内核配置和编译就采用了KBuild,使用着可以方便地用菜单来配置/定制Linux内核。
|
7
|
+
由于KBuild比较复杂,需要依赖许多Linux下的库,而且定制和扩展KBuild的功能都很麻烦,因此要在一个软件项目中采用KBuild,往往需要作许多工作。
|
8
|
+
|
9
|
+
RBuild的目的也就是为你的软件提供一个类似KBuild的基于菜单的配置系统。在一个软件项目中使用RBuild很简单,只要系统中安装有Ruby(和Rake)就可以了。
|
10
|
+
|
11
|
+
由于RBuild采用Ruby DSL来实现,因此非常灵活,易于扩展。RBuild不仅可以从配置中产生C/C++的头文件,Makefile文件,而且可以很容易地扩展RBuild(增加plugins)来
|
12
|
+
产生你所需要的格式的文件。因此,RBuild不仅可以用于C/C++项目的配置管理,也可以用于其他语言的开发项目。
|
13
|
+
|
14
|
+
-- 2 RBuild 的组成 --
|
15
|
+
|
16
|
+
RBuild由三部分组成:RBuild核心,RBuild插件,和RBuild配置文件(RConfig)。
|
17
|
+
|
18
|
+
RBuild核心完成DSL解析,菜单驱动等功能,RBuild插件负责输出各种文件。RBuild核心和RBuild插件由RBuild项目提供,参加scripts目录下的文件。
|
19
|
+
而RConfig文件则需要由用户编写。RConfig文件就是用户用RBuild DSL来描述自己软件需要配置的信息,RConfig文件可以是一个或者多个散布在用户工程
|
20
|
+
目录中,熟悉Linux内核开发的用户对于这种方式一定非常熟悉。
|
21
|
+
|
22
|
+
最后,RConfig文件作为RBuild的输入,用于产生配置菜单,供使用者对软件进行配置。
|
23
|
+
|
24
|
+
-- 3 RConfig 语法 --
|
25
|
+
|
26
|
+
3.1 RBuild DSL语句
|
27
|
+
RBuild DSL有四种类型:
|
28
|
+
* 第一种用于组织配置项的显示,如:'menu', 'group'。
|
29
|
+
* 第二种是用于产生配置项,如:'choice', 'config'。
|
30
|
+
* 第三种是属性描述,如:'title', 'default', 'help', 'range', 'depends', ...
|
31
|
+
* 最后一种是用于包含其他RConfig文件,如:'source', 'target'
|
32
|
+
|
33
|
+
一个简单的RConfig文件例子:
|
34
|
+
|
35
|
+
title "Welcom to my software config system !"
|
36
|
+
menu "Package config" do
|
37
|
+
config :PACKAGE_A => "enable package A"
|
38
|
+
group "Package A options" do
|
39
|
+
depends :PACKAGE_A
|
40
|
+
config :PACKAGE_A_FUN_A => "function A"
|
41
|
+
config :PACKAGE_A_FUN_B => "function B"
|
42
|
+
end
|
43
|
+
config :PACKAGE_B => "enable package B"
|
44
|
+
choice :PACKAGE_B_PARAM => "select package B param" do
|
45
|
+
depends :PACKAGE_B
|
46
|
+
default 200
|
47
|
+
range 100, 200, 300
|
48
|
+
end
|
49
|
+
end
|
50
|
+
menu "RBuild Configuration" do
|
51
|
+
group "RBuild System Options" do
|
52
|
+
choice :RBUILD_SYS_CONFIG_FILE => "RBuild Configuration File" do
|
53
|
+
property :no_export # do not export this, it's for rbuild system internal.
|
54
|
+
default 'rb.config'
|
55
|
+
end
|
56
|
+
|
57
|
+
choice :RBUILD_PLUGIN_EXP_C_HEADER_FILE => "RBuild Export File" do
|
58
|
+
property :no_export # do not export this, it's for rbuild system internal.
|
59
|
+
default 'config.h'
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
3.2 RConfig 语法
|
65
|
+
RConfig文件的语法非常简单,如果熟悉Ruby的语法,那么理解就更简单了,以下就是对RConfig语法的一个简单描述:
|
66
|
+
|
67
|
+
3.2.1 do ... end: 用于限定子项目的作用范围,例如:
|
68
|
+
menu "XXX" do
|
69
|
+
config :PACKAGE_A
|
70
|
+
end
|
71
|
+
|
72
|
+
在这里,config :PACKAGE_A 就是menu "XXX" 的子项目。当然,子项目可以是任意合法的语句,如配置项(config),选择项(choice),
|
73
|
+
或者属性,也可以嵌套另一个menu,如:
|
74
|
+
menu "XXX" do
|
75
|
+
menu "YYY" do
|
76
|
+
...
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
通过 do ... end, RConfig就可以构筑了一个有层次的菜单系统。
|
81
|
+
|
82
|
+
3.2.2 “:XXX” 符号
|
83
|
+
在RConfig中,以":"开头的称为“符号”, 如 :MODULE_A, 就是一个“符号”。“符号”用于对某个 menu, group, config 或 choice 进行标识,例如:
|
84
|
+
|
85
|
+
config :MODULE_A => "enable module A"
|
86
|
+
|
87
|
+
在这里,用 :MODULE_A 对这个‘config’进行标识。
|
88
|
+
符号后面可以用 => "description string" 来对这个符号进行描述,这里的描述信息也会作为提示信息显示在配置菜单中。如果不带描述信息,则符号名称会作为
|
89
|
+
描述信息出现在菜单项中。
|
90
|
+
|
91
|
+
符号,作为对'config'或者'choice'的标识,在输出C/C++头文件的时候会被转换成宏定义。例如:
|
92
|
+
config :MODULE_A 这个选项如果被选中,那么最终产生的C/C++头文件中就会出现这么一行:
|
93
|
+
#define CONFIG_MODULE_A
|
94
|
+
也就是说,符号前面被加上“CONFIG_”出现在头文件中。
|
95
|
+
|
96
|
+
有时候符号可以被省略,而直接用描述信息作为标识,例如前面看到的menu实际上就是这种情况:
|
97
|
+
menu "XXX" do
|
98
|
+
...
|
99
|
+
end
|
100
|
+
有些情况下,你需要对一个menu进行显式的标识,如:
|
101
|
+
menu :MENU_XXX => "XXX" do
|
102
|
+
...
|
103
|
+
end
|
104
|
+
|
105
|
+
更多的关于如何编写RConfig文件,请参阅example目录下的例子。
|
106
|
+
|
107
|
+
3.3.3 RBuild DSL参考
|
108
|
+
这里列出目前所能够支持的RBuild DSL:
|
109
|
+
|
110
|
+
3.3.3.1 属性
|
111
|
+
从上面的例子我们可以看到,属性声明要放在do ... end 里面,如果:
|
112
|
+
choice :PACKAGE_B_PARAM => "select package B param" do
|
113
|
+
depends :PACKAGE_B
|
114
|
+
default 200
|
115
|
+
range 100, 200, 300
|
116
|
+
end
|
117
|
+
这里的depends, default, range都是属性声明语句,他们都是作用于choice :PACKAGE_B_PARAM。
|
118
|
+
|
119
|
+
目前RBuild实现的属性声明有:
|
120
|
+
- title: 设置描述信息
|
121
|
+
- help: 设置帮助信息
|
122
|
+
- default: 设置默认值,注意,值的类型要和被设置对象吻合
|
123
|
+
- range: 设置值的范围,通常作用于choice。range的声明方式很灵活,有以下几种形式:
|
124
|
+
range 100, 200, 300 # 只有三个选择,100, 200 或 300
|
125
|
+
range 0..100 # 从0到100的任意值(包括0和100)
|
126
|
+
range "A", "B", "C" # 字符串形式的选择项
|
127
|
+
range 0=>"Zero", 1=>"One", 2=>"Two" # 带描述信息的选择项
|
128
|
+
|
129
|
+
- depends: 声明此项目依赖于其他项目,后面的参数是被依赖项目的标识符(符号),如:
|
130
|
+
depends :MODULE_A, :MODULE_B
|
131
|
+
|
132
|
+
- select: 当本项目被选中时,主动选择另外的项目,如:
|
133
|
+
select :FUN_A, :FUN_B # 但此项目被选中是,同时也选中 :FUN_A 和 :FUN_B
|
134
|
+
|
135
|
+
- unselect: 当本项目被反选中时,也同时反选中另外的项目
|
136
|
+
- no_export: 告诉RBuild在产生输出文件时忽略此项目。
|
137
|
+
- hidden: 隐藏此项目,不在菜单上出现。
|
138
|
+
- property: 这是一个中转器,用于集中设置其他项目,使代码看起来更紧凑,如:
|
139
|
+
property :hidden, :no_export, :default => 0
|
140
|
+
等效于:
|
141
|
+
hidden
|
142
|
+
no_export
|
143
|
+
default 0
|
144
|
+
|
145
|
+
3.3.3.2 项目组织类
|
146
|
+
- menu: 用于产生菜单,用于隐藏子项目,当进入此菜单时,显示子项目。
|
147
|
+
- group: 对一组子项目进行归纳。和menu不同,group在当前视图中显示子项目。
|
148
|
+
|
149
|
+
3.3.3.3 配置项目类
|
150
|
+
- config: 用于简单的配置。对于config,只有"选中"和"未选中"两种状态。当然,这两种状态对应的配置值可以用range来指定。
|
151
|
+
- choice: 用于复杂的配置哦。对于choice,要看是否为choice设置了范围(用range设置范围):
|
152
|
+
如果range存在,则根据range的设置,从range里面选择配置。
|
153
|
+
如果range不存在,则提示用户输入自定义的值。
|
154
|
+
|
155
|
+
3.3.3.4 文件包含类
|
156
|
+
- source: 用于包含另外一个或者多个RConfig文件,例如:
|
157
|
+
source "src/RConfig" # 包含src目录下的RConfig文件。
|
158
|
+
也可以在source参数中使用通配符,如:
|
159
|
+
source "*/RConfig" # 包含所有子目录下的RConfig文件。
|
160
|
+
甚至可以这样:
|
161
|
+
source "**/*/RConfig" # 递归包含所有子目录下的RConfig文件。
|
162
|
+
- target: 用于指示当一个配置被选中时应该把那些文件加入到'target list'里面。
|
163
|
+
'target list'通常用于产生输出文件,如Makefile文件。例如:
|
164
|
+
|
165
|
+
config :MUDLE_A => "enable module A" do
|
166
|
+
target 'module_a.c'
|
167
|
+
end
|
168
|
+
|
169
|
+
target也可以放在config和choice外面,这时只要当前的依赖满足,就总是把文件放入'target list'里面。
|
170
|
+
|
171
|
+
-- 4 安装RBuild --
|
172
|
+
|
173
|
+
4.1. 安装 Ruby,可以从 http://www.ruby-lang.org 处下载。或者,如果是在Debian/Ubuntu下:
|
174
|
+
sudo apt-get install ruby1.8 rake
|
175
|
+
|
176
|
+
4.2. 把 'scripts' 目录拷贝到你的项目目录下。
|
177
|
+
|
178
|
+
4.3. 开始编写你的RConfig文件,通常第一个RConfig文件放在你的项目目录下。
|
179
|
+
|
180
|
+
4.4. 在项目的目录下建立一个Rakefile文件, 内容如下:
|
181
|
+
require 'scripts/rbuild'
|
182
|
+
|
183
|
+
task :menuconfig do
|
184
|
+
rconf = RBuild::RConfig.new 'RConfig'
|
185
|
+
rconf.menuconfig()
|
186
|
+
end
|
187
|
+
4.5. 在项目目录下,键入:
|
188
|
+
rake menuconfig
|
189
|
+
|
190
|
+
|
191
|
+
-- 5 RBuild项目主页 --
|
192
|
+
|
193
|
+
http://www.sourceforge.net/projects/rbuild/
|
194
|
+
|
195
|
+
|
196
|
+
-- 6 LICENCE --
|
197
|
+
|
198
|
+
RBuild is released under GNU GPLv2.
|
199
|
+
|
200
|
+
Copy Right (c) 2008, Ricky Zheng <ricky_gz_zheng@yahoo.co.nz>
|
201
|
+
|
202
|
+
|
203
|
+
|
data/README.zh_CN~
ADDED
@@ -0,0 +1,197 @@
|
|
1
|
+
RBuild - a KBuild like software configure/build system by Ruby DSL.
|
2
|
+
-------------------------------------------------------------------
|
3
|
+
|
4
|
+
-- 1 RBuild简介 --
|
5
|
+
|
6
|
+
RBuild是一个类似KBuild的软件配置和编译系统。Linux内核配置和编译就采用了KBuild,使用着可以方便地用菜单来配置/定制Linux内核。
|
7
|
+
由于KBuild比较复杂,需要依赖许多Linux下的库,而且定制和扩展KBuild的功能都很麻烦,因此要在一个软件项目中采用KBuild,往往需要作许多工作。
|
8
|
+
|
9
|
+
RBuild的目的也就是为你的软件提供一个类似KBuild的基于菜单的配置系统。在一个软件项目中使用RBuild很简单,只要系统中安装有Ruby(和Rake)就可以了。
|
10
|
+
|
11
|
+
由于RBuild采用Ruby DSL来实现,因此非常灵活,易于扩展。RBuild不仅可以从配置中产生C/C++的头文件,Makefile文件,而且可以很容易地扩展RBuild(增加plugins)来
|
12
|
+
产生你所需要的格式的文件。因此,RBuild不仅可以用于C/C++项目的配置管理,也可以用于其他语言的开发项目。
|
13
|
+
|
14
|
+
-- 2 RBuild 的组成 --
|
15
|
+
|
16
|
+
RBuild由三部分组成:RBuild核心,RBuild插件,和RBuild配置文件(RConfig)。
|
17
|
+
|
18
|
+
RBuild核心完成DSL解析,菜单驱动等功能,RBuild插件负责输出各种文件。RBuild核心和RBuild插件由RBuild项目提供,参加scripts目录下的文件。
|
19
|
+
而RConfig文件则需要由用户编写。RConfig文件就是用户用RBuild DSL来描述自己软件需要配置的信息,RConfig文件可以是一个或者多个散布在用户工程
|
20
|
+
目录中,熟悉Linux内核开发的用户对于这种方式一定非常熟悉。
|
21
|
+
|
22
|
+
最后,RConfig文件作为RBuild的输入,用于产生配置菜单,供使用者对软件进行配置。
|
23
|
+
|
24
|
+
-- 3 RConfig 语法 --
|
25
|
+
|
26
|
+
3.1 RBuild DSL语句
|
27
|
+
RBuild DSL有四种类型:
|
28
|
+
* 第一种用于组织配置项的显示,如:'menu', 'group'。
|
29
|
+
* 第二种是用于产生配置项,如:'choice', 'config'。
|
30
|
+
* 第三种是属性描述,如:'title', 'default', 'help', 'range', 'depends', ...
|
31
|
+
* 最后一种是用于包含其他RConfig文件,如:'source'
|
32
|
+
|
33
|
+
一个简单的RConfig文件例子:
|
34
|
+
|
35
|
+
title "Welcom to my software config system !"
|
36
|
+
menu "Package config" do
|
37
|
+
config :PACKAGE_A => "enable package A"
|
38
|
+
group "Package A options" do
|
39
|
+
depends :PACKAGE_A
|
40
|
+
config :PACKAGE_A_FUN_A => "function A"
|
41
|
+
config :PACKAGE_A_FUN_B => "function B"
|
42
|
+
end
|
43
|
+
config :PACKAGE_B => "enable package B"
|
44
|
+
choice :PACKAGE_B_PARAM => "select package B param" do
|
45
|
+
depends :PACKAGE_B
|
46
|
+
default 200
|
47
|
+
range 100, 200, 300
|
48
|
+
end
|
49
|
+
end
|
50
|
+
menu "RBuild Configuration" do
|
51
|
+
group "RBuild System Options" do
|
52
|
+
choice :RBUILD_SYS_CONFIG_FILE => "RBuild Configuration File" do
|
53
|
+
property :no_export # do not export this, it's for rbuild system internal.
|
54
|
+
default 'rb.config'
|
55
|
+
end
|
56
|
+
|
57
|
+
choice :RBUILD_PLUGIN_EXP_C_HEADER_FILE => "RBuild Export File" do
|
58
|
+
property :no_export # do not export this, it's for rbuild system internal.
|
59
|
+
default 'config.h'
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
3.2 RConfig 语法
|
65
|
+
RConfig文件的语法非常简单,如果熟悉Ruby的语法,那么理解就更简单了,以下就是对RConfig语法的一个简单描述:
|
66
|
+
|
67
|
+
3.2.1 do ... end: 用于限定子项目的作用范围,例如:
|
68
|
+
menu "XXX" do
|
69
|
+
config :PACKAGE_A
|
70
|
+
end
|
71
|
+
|
72
|
+
在这里,config :PACKAGE_A 就是menu "XXX" 的子项目。当然,子项目可以是任意合法的语句,如配置项(config),选择项(choice),
|
73
|
+
或者属性,也可以嵌套另一个menu,如:
|
74
|
+
menu "XXX" do
|
75
|
+
menu "YYY" do
|
76
|
+
...
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
通过 do ... end, RConfig就可以构筑了一个有层次的菜单系统。
|
81
|
+
|
82
|
+
3.2.2 “:XXX” 符号
|
83
|
+
在RConfig中,以":"开头的称为“符号”, 如 :MODULE_A, 就是一个“符号”。“符号”用于对某个 menu, group, config 或 choice 进行标识,例如:
|
84
|
+
|
85
|
+
config :MODULE_A => "enable module A"
|
86
|
+
|
87
|
+
在这里,用 :MODULE_A 对这个‘config’进行标识。
|
88
|
+
符号后面可以用 => "description string" 来对这个符号进行描述,这里的描述信息也会作为提示信息显示在配置菜单中。如果不带描述信息,则符号名称会作为
|
89
|
+
描述信息出现在菜单项中。
|
90
|
+
|
91
|
+
符号,作为对'config'或者'choice'的标识,在输出C/C++头文件的时候会被转换成宏定义。例如:
|
92
|
+
config :MODULE_A 这个选项如果被选中,那么最终产生的C/C++头文件中就会出现这么一行:
|
93
|
+
#define CONFIG_MODULE_A
|
94
|
+
也就是说,符号前面被加上“CONFIG_”出现在头文件中。
|
95
|
+
|
96
|
+
有时候符号可以被省略,而直接用描述信息作为标识,例如前面看到的menu实际上就是这种情况:
|
97
|
+
menu "XXX" do
|
98
|
+
...
|
99
|
+
end
|
100
|
+
有些情况下,你需要对一个menu进行显式的标识,如:
|
101
|
+
menu :MENU_XXX => "XXX" do
|
102
|
+
...
|
103
|
+
end
|
104
|
+
|
105
|
+
更多的关于如何编写RConfig文件,请参阅example目录下的例子。
|
106
|
+
|
107
|
+
3.3.3 RBuild DSL参考
|
108
|
+
这里列出目前所能够支持的RBuild DSL:
|
109
|
+
|
110
|
+
3.3.3.1 属性
|
111
|
+
从上面的例子我们可以看到,属性声明要放在do ... end 里面,如果:
|
112
|
+
choice :PACKAGE_B_PARAM => "select package B param" do
|
113
|
+
depends :PACKAGE_B
|
114
|
+
default 200
|
115
|
+
range 100, 200, 300
|
116
|
+
end
|
117
|
+
这里的depends, default, range都是属性声明语句,他们都是作用于choice :PACKAGE_B_PARAM。
|
118
|
+
|
119
|
+
目前RBuild实现的属性声明有:
|
120
|
+
- title: 设置描述信息
|
121
|
+
- help: 设置帮助信息
|
122
|
+
- default: 设置默认值,注意,值的类型要和被设置对象吻合
|
123
|
+
- range: 设置值的范围,通常作用于choice。range的声明方式很灵活,有以下几种形式:
|
124
|
+
range 100, 200, 300 # 只有三个选择,100, 200 或 300
|
125
|
+
range 0..100 # 从0到100的任意值(包括0和100)
|
126
|
+
range "A", "B", "C" # 字符串形式的选择项
|
127
|
+
range 0=>"Zero", 1=>"One", 2=>"Two" # 带描述信息的选择项
|
128
|
+
|
129
|
+
- depends: 声明此项目依赖于其他项目,后面的参数是被依赖项目的标识符(符号),如:
|
130
|
+
depends :MODULE_A, :MODULE_B
|
131
|
+
|
132
|
+
- select: 当本项目被选中时,主动选择另外的项目,如:
|
133
|
+
select :FUN_A, :FUN_B # 但此项目被选中是,同时也选中 :FUN_A 和 :FUN_B
|
134
|
+
|
135
|
+
- unselect: 当本项目被反选中时,也同时反选中另外的项目
|
136
|
+
- no_export: 告诉RBuild在产生输出文件时忽略此项目。
|
137
|
+
- hidden: 隐藏此项目,不在菜单上出现。
|
138
|
+
- property: 这是一个中转器,用于集中设置其他项目,使代码看起来更紧凑,如:
|
139
|
+
property :hidden, :no_export, :default => 0
|
140
|
+
等效于:
|
141
|
+
hidden
|
142
|
+
no_export
|
143
|
+
default 0
|
144
|
+
|
145
|
+
3.3.3.2 项目组织类
|
146
|
+
- menu: 用于产生菜单,用于隐藏子项目,当进入此菜单时,显示子项目。
|
147
|
+
- group: 对一组子项目进行归纳。和menu不同,group在当前视图中显示子项目。
|
148
|
+
|
149
|
+
3.3.3.3 配置项目类
|
150
|
+
- config: 用于简单的配置。对于config,只有"选中"和"未选中"两种状态。当然,这两种状态对应的配置值可以用range来指定。
|
151
|
+
- choice: 用于复杂的配置哦。对于choice,要看是否为choice设置了范围(用range设置范围):
|
152
|
+
如果range存在,则根据range的设置,从range里面选择配置。
|
153
|
+
如果range不存在,则提示用户输入自定义的值。
|
154
|
+
|
155
|
+
3.3.3.4 文件包含类
|
156
|
+
- source: 用于包含另外一个或者多个RConfig文件,例如:
|
157
|
+
source "src/RConfig" # 包含src目录下的RConfig文件。
|
158
|
+
也可以在source参数中使用通配符,如:
|
159
|
+
source "*/RConfig" # 包含所有子目录下的RConfig文件。
|
160
|
+
甚至可以这样:
|
161
|
+
source "**/*/RConfig" # 递归包含所有子目录下的RConfig文件。
|
162
|
+
|
163
|
+
|
164
|
+
-- 4 安装RBuild --
|
165
|
+
|
166
|
+
4.1. 安装 Ruby,可以从 http://www.ruby-lang.org 处下载。或者,如果是在Debian/Ubuntu下:
|
167
|
+
sudo apt-get install ruby1.8 rake
|
168
|
+
|
169
|
+
4.2. 把 'scripts' 目录拷贝到你的项目目录下。
|
170
|
+
|
171
|
+
4.3. 开始编写你的RConfig文件,通常第一个RConfig文件放在你的项目目录下。
|
172
|
+
|
173
|
+
4.4. 在项目的目录下建立一个Rakefile文件, 内容如下:
|
174
|
+
require 'scripts/rbuild'
|
175
|
+
|
176
|
+
task :menuconfig do
|
177
|
+
rconf = RBuild::RConfig.new 'RConfig'
|
178
|
+
rconf.menuconfig()
|
179
|
+
end
|
180
|
+
4.5. 在项目目录下,键入:
|
181
|
+
rake menuconfig
|
182
|
+
|
183
|
+
|
184
|
+
-- 5 RBuild项目主页 --
|
185
|
+
|
186
|
+
http://www.sourceforge.net/projects/rbuild/
|
187
|
+
|
188
|
+
|
189
|
+
|
190
|
+
-- 6 LICENCE --
|
191
|
+
|
192
|
+
RBuild is released under GNU GPLv2.
|
193
|
+
|
194
|
+
Copy Right (c) 2008, Ricky Zheng <ricky_gz_zheng@yahoo.co.nz>
|
195
|
+
|
196
|
+
|
197
|
+
|