1213_SCons初步了解以及安装试用装试用
全部学习汇总:https://github.com/GreyZhang/g_SCons
前阵子学习中的Makefile中断了,最近计划捡回来。不过,这段时间刚好在网上看到了几种可以实现软件构建的自动化工具,趁着这个机会了解一下。说不准,后续这样工具的掌握就可以直接替代掉Makefile这种古老的技术了。这次我看到的一个工具叫做SCons,支持多种编程语言,而我关注的C语言也在其中。
首先看看什么事SCons,从介绍看这个很可能是软件构建工具单词的缩写。不同于autotools或者cmake,他们是提供Makefile的构建,SCons看起来是直接跳过了这样的过程,直接提供了一个make的替代方案。从这个描述看,SCons还是有自己的独到之处的。以往的各种工具其实是在想方设法构建Makefile,如果深入理解还是躲不开Makefile的知识。而SCons把这个换成了python,自然,这种脚本语言在掌握上应该会更容易一些。
接下来,找一下软件包并且尝试安装。从官方的网站介绍找到了链接:SCons - Browse /scons at SourceForge.net
这里面有多个版本,最新的是4.3.0,但是看到网络上的说明稳定版本是4.2.0,因此我自己接下来的尝试的版本会是4.2.0。有一点需要注意,SCons对于Python的版本是有要求的,安装不同的版本可能也会有不同的要求。安装之间需要确保python的版本安装正确,这个是另一个话题但是比较简单,这里不再专门介绍。
安装非常简单,解压压缩包之后执行python setup.py install。
检测安装是否成功,可以执行scons -v,查看提示。
从这里可以看到,版本号已经识别成功。
这个软件是在MIT的lic下的,之前对这个license了解不多。前面看FreeRTOS的时候,了解过这个MIT license的介绍。简单一句就是:比自由更加自由。
这里介绍了一下SCons跟Make之间的关系,从这里看得出最初看到的介绍以及我自己理解的那样。SCons其实并不是autotools或者make的同类品或者竞争者,而是Make方案的一个替代品。
接下来,尝试做一个最简单的尝试,做一个我认为的hello world形式的操作出来。具体的工程中只有一个文件,test.c,然后生成一个my_scons的可执行文件。程序实现一个字符串的打印。
-
首先创建sconstruct.py配置文件,具体的配置信息如下:
2. 接下来,实现一个简单的C文件编写,具体内容如下:
3. 命令行中切换到当前目录,然后执行scons .。这里需要注意,执行的时候必须要有管理员权限,否则的话临时的目录会创建不成功。可能这个后续还有改进的方式,暂时的hello world尝试我采用了切换管理员权限来达成目标。
虽然中间有部分警告,但是基础的功能看得出来是已经实现了。这自然会有很多改进点存在,临时至少是可以用这个验证一下可行性。
另外一点,可以从生成的文件中看到,中间涉及到的目标文件也是创建出来了的。
接下来附加一下涉及到的代码或者配置:
-
配置文件如下:
import os
env = Environment(ENV={'PATH': os.environ['PATH']})
env["CC"] = "gcc"
env.Program(target='my_scons', source=['test.c'])
-
代码文件如下:
#include "stdio.h"
int main(void)
{
printf("test for scons.\n");
return 0;
}