Scons简介

1、前言

提到Scons就不得不提一下make,因为两者都是做项目管理常用的编译工具。make 这个工具自上个世纪 70 年代 Stuart Feldman 在贝尔实验室开发出以来,就一直是类 UNIX 程序员的最爱之一。

通过检查文件的修改时间,make 工具可以知道编译目标文件所要依赖的其他文件。在复杂的项目中,如果只有少数几个文件修改过,make 工具知道仅仅需要对哪些文件重新编译就可以确保目标程序被正确的编译链接。这样做的好处就是在编译中,不仅可以节省大量的重复输入,还可以确保程序可以被正确的链接,缩短编译的时间。

Scons,它做的事情跟make一样,但更简单,更容易。

2、Scons简介

Scons是一个开放源码、以Python语言编码的自动化构建工具,可用来替代make编写复杂的makefile。并且scons是跨平台的,只要scons脚本写的好,可以在Linux和Windows下随意编译。

Scons 的设计目标就是让开发人员更容易、更可靠和更快速的建造软件。
scons官网SCons: https://scons.org/

2.1、Scons 和 make的比较

与传统的 make 工具比较,Scons 具有以下优点:

(1)使用 Python 脚本做为配置文件
(2)对于 C,C++ 和 Fortran, 内建支持可靠自动依赖分析 . 不用像 make 工具那样需要 执行"make depends"和"make clean"就可以获得所有的依赖关系。
(3)内建支持 C, C++, Java, Fortran, Yacc, Lex, Qt,SWIG 以及 Tex/Latex。 用户还可以根据自己的需要进行扩展以获得对需要编程语言的支持。
(4)支持 make -j 风格的并行建造。相比 make -j, Scons 可以同时运行 N 个工作,而 不用担心代码的层次结构。
(5)使用 Autoconf 风格查找头文件,函数库,函数和类型定义。
(6)良好的夸平台性。Scons 可以运行在 Linux, AIX, BSD, HP/UX, IRIX, Solaris, Windows, Mac OS X 和 OS/2 上。

2.2、Scons的安装路径

默认安装路径,对于 Linux 来说,scons 会默认安装到 /usr/loca/bin 目录下,而在 Windows 平台上,则会被安装到 C:\Python25\Scripts 下。

2.3、Scons 支持的编译类型

(1)Program: 编译成可执行程序(在 Windows 平台上即是 exe 文件),这是最常用的一种编译类型。
(2)Object: 只编译成目标文件。使用这种类型,编译结束后,只会产生目标文件。在 POSIX 系统中,目标文件以 .o 结尾,在 Windows 平台上以 .OBJ 结尾。
(3)Library: 编译成库文件。SCons 默认编译的库是指静态链接库。
(4)StaticLibrary: 显示的编译成静态链接库,与上面的 Library 效果一样。
(5)SharedLibrary: 在 POSIX 系统上编译动态链接库,在 Windows 平台上编译 DLL。

2.4、Scons 内置的关键字

Scons 内置的关键字常用的有:LIBS,LIBAPTH,CCFLAGS,CPPFLAGS,CPPPATH,作用如下:
(1)LIBS: 显示的指明要在链接过程中使用的库,如果有多个库,应该把它们放在一个列表里面。这个例子里,我们使用一个称为 m 的库。
(2)LIBPATH: 链接库的搜索路径,多个搜索路径放在一个列表中。这个例子里,库的搜索路径是 /usr/lib 和 /usr/local/lib。
(3)CCFLAGS: 编译选项,可以指定需要的任意编译选项,如果有多个选项,应该放在一个列表中。这个例子里,编译选项是通过 -D 这个 gcc 的选项定义了一个宏 HELLOSCONS。
(4)CPPPATH:指定头文件的路径。

2.5、环境变量

2.5.1、外部环境变量

外部环境变量指的是在用户运行Scons的时候,用户环境中的变量的集合。这些变量在SConscript文件中通过Python的os.environ字典可以获得。你想使用外部环境的SConscript文件需要增加一个import os语句。

举例:
import os
var_env_outer = os.environ.get('CONFIG_PRODUCT') 

其中CONFIG_PRODUCT就是用户环境中定义的变量。

2.5.2、构造环境变量

一个构造环境是在一个SConscript文件中创建的一个唯一的对象,这个对象包含了一些值可以影响SCons编译一个目标的时候做什么动作,以及决定从那一个源中编译出目标文件。SCons一个强大的功能就是可以创建多个构造环境,包括从一个存在的构造环境中克隆一个新的自定义的构造环境。

2.5.3、执行环境变量

一个执行环境是SCons在执行一个外部命令编译一个或多个目标文件时设置的一些值。这和外部环境是不同的。当SCons编译一个目标文件的时候,它不会使用你用来执行SCons的同样的外部环境来执行一些命令。它会使用$ENV构造变量作为外部环境来执行命令。这个行为最重要的体现就是PATH环境变量,它决定了操作系统将去哪里查找命令和工具,与你调用SCons使用的外部环境的不一样。这就意味着SCons将不能找到你在命令行里执行的所有工具。PATH环境变量的默认值是/usr/local/bin:/bin:/usr/bin。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只特立独行的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值