这段时间用到了scons,这里总结下,也方便我以后查阅。
一、安装scons
linux环境(以centos为例)
1、yum安装
yum install scons
2、源码安装
下载scons:http://http://jaist.dl.sourceforge.net/project/scons/scons/2.3.0/scons-2.3.0.zip
安装scons:python setup.py install
二、scons常用命令
scons -c : 可以清除生成的临时文件和目标文件,相当于执行make clean。
scons -q : 将产生更少的输出信息。
三、scons使用示例
1、编译可执行文件
使用program函数进行可执行文件的编译。
1.1 单文件方式
1.1.1 编写程序代码
建立文件test.c,内容如下:
代码如下:
#include
int main()
{
printf(“just a test!\n”);
return 0;
}
1.1.2 编写sconstruct代码
内容如下:
代码如下:
program(“test1.c”)
1.1.3 编译程序
执行scons命令进行编译,效果如下:
1.2 多文件方式
1.2.1 编写程序代码
test1.h文件:
代码如下:
#include
void fun11();
test1.c文件:
代码如下:
#include “test1.h”
void fun11()
{
printf(“fun11\n”);
}
test2.c文件:
代码如下:
#include “test1.h”
int main()
{
fun11();
return 0;
}
1.2.2 编写sconstruct代码
内容如下:
代码如下:
program(‘test’, [‘test1.c’,’test2.c’])
或者:
代码如下:
program(‘test’,glob(‘*.c’))
1.2.3 编译程序
执行scons命令进行编译。
1.3 依赖
1.3.1 链接库
语法示例如下:
代码如下:
program(‘test’, [‘test1.cpp’],libs=[‘boost_system’,’boost_thread-mt’], libpath=’/usr/lib64′)
1.3.2 包含库
语法示例如下:
代码如下:
program(‘program’,glob(‘*.c’),cpppath=’/home/admin/inc’)
2、编译静态库
语法示例如下:
代码如下:
library(‘libtest1’,[‘test1.c’])
3、编译动态库
语法示例如下:
代码如下:
sharedlibrary(‘libtest1’,[‘test1.c’])
三、其它
参考资料
(1) scons主页:http://www.scons.org/
(2) scons文档:http://www.scons.org/documentation.php