scons的介绍、使用和简单实例
一、scons是什么
SCons 是一个开放源代码、以 Python 语言编写的下一代的程序建造工具。功能上类似于make。
个人理解:一个单个文件的程序是不需要scons和make之类的构建工具的,只要用gcc或者g++编译就好。但是一些相对较大的项目有多个文件,各个文件之间的依赖关系复杂,如果用g++来编译就会非常复杂,不仅要写的命令多,而且容易出错,所以就出现了make,但是make可能也存在某些问题,就出现了scons。总之,这两种工具解决构建的方法就是用一个配置文件来记录下各个文件之间的依赖关系,用到了那些库,配置好环境变量等等,然后直接构建。scons并不是和g++一样的编译工具,而是在g++的基础上的工具。
二、与make相比,scons的优势
- 使用 Python 脚本做为配置文件
- 对于 C,C++ 和 Fortran, 内建支持可靠自动依赖分析 . 不用像 make 工具那样需要 执行”make depends”和”make clean”就可以获得所有的依赖关系。
- 内建支持 C, C++, D, Java, Fortran, Yacc, Lex, Qt,SWIG 以及 Tex/Latex。 用户还可以根据自己的需要进行扩展以获得对需要编程语言的支持。
- 支持 make -j 风格的并行建造。相比 make -j, SCons 可以同时运行 N 个工作,而 不用担心代码的层次结构。
- 使用 Autoconf 风格查找头文件,函数库,函数和类型定义。
良好的夸平台性。SCons 可以运行在 Linux, AIX, BSD, HP/UX, IRIX, Solaris, Windows, Mac OS X 和 OS/2 上。
三、scons的配置文件
SConstruct是scons的配置文件,是用python编写的,自然要遵守python语法(ps:对于只接触过类C语言的人来说,python语法最大的不同就是python是用:和缩进这两个东西来划分语句块的,不知道这点很可能看不懂SConstruct文件)。
四、scons命令
- scons -Q //减少编译时的由 scons 产生的冗余信息
- scons -c //执行清理任务
五、SConstruct常用函数
- Program(target,source,libs)
target:编译的目标文件名
source:需要编译的文件组
libs:需要的所有库
这个是核心函数,其他的都是为这个函数辅助
scons的介绍、使用和简单实例相关推荐
- (三)AJAX基本介绍和简单实例03
(三)AJAX基本介绍和简单实例03-----Ajax与数据库的动态应用 前台显示界面: 选择所有客户之后: 选择其中一个客户---杜森: Demo03.html代码 <html> < ...
- ActiveMQ简单介绍+简单实例
本文出自:http://www.open-open.com/lib/view/open1388994166156.html 1. JMS基本概念 JMS(Java Message Servi ...
- ZendFramework的介绍、安装和实例运行
框架主要是为了提高开发效率.使得团队开发人员之间的更容易沟通和协作以及提高应用程序的可维护性.学习了解一种或多种框架对实际项目的应用会有所帮助. 一.ZendFramework 的介绍: ZendFr ...
- Hibernate搭建开发环境+简单实例(二)
2019独角兽企业重金招聘Python工程师标准>>> Hibernate是非常典型的持久层框架,持久化的思想是非常值得我们学习和研究的.这篇博文,我们主要以实例的形式学习Hiber ...
- php 二位数组随机,PHP多维数组 php打乱数组二维数组多维数组的简单实例
php中的shuffle函数只能打乱一维数组,有什么办法快速便捷的打乱多维数组?手册上提供了 上面这个是针对二维数组的! 下面针对多维数组的乱序方法?尽可能的方便快速: 以下函数也是出自php手册,可 ...
- 如何上传html验证文件大小,html5 实现客户端验证上传文件的大小(简单实例)
在HTML 5中,现在可以在客户端进行文件上传时的校验了,比如用户选择文件后,可以 马上校验文件的大小和属性等.本文章向码农介绍html5 如何实现客户端验证上传文件的大小,感兴趣的码农可以参考一下. ...
- Android Fragment 简单实例
Android上的界面展示都是通过Activity实现的.Activity实在是太经常使用了.我相信大家都已经很熟悉了,这里就不再赘述. 可是Activity也有它的局限性,相同的界面在手机上显示可能 ...
- 简单实例讲解linux的module模块编译步骤
简单实例讲解linux的module模块编译步骤 (2014-10-24 10:19:17) 标签: module linux 分类:Linux/Unix 本文将直接了当的带你进入linux的模块编译 ...
- php简单实例,php实现推荐功能的简单实例
php实现推荐功能的简单实例,魔法,标题,文章,简明扼要,数组 php实现推荐功能的简单实例 易采站长站,站长之家为您整理了php实现推荐功能的简单实例的相关内容. 利用similar_text将这些 ...
- velocity用法简单实例说明 .
http://blog.csdn.net/renxianzuo/article/details/4457381 2009-08-18 01:48 3516人阅读 评论(8) 收藏 举报 velocit ...
最新文章
- 170多个Ionic Framework学习资源(转载)
- HDU3509(构造矩阵)
- DELPHI编程环境
- python count函数用法 comm_python3:MySQL 8.0学习笔记(第五部分:单表查询操作)
- c语言abc变def,C语言的permutation求解
- EXTRONICS推出IRFID500便携式UHF RFID读写器
- php web表格导出,javascript将web表格导出成excel
- 机器学习必知的 10 个 Python 库
- 圆弧周长公式_钢板和钢管的理论重量计算公式居然不一样?
- python能做什么项目-这十个Python实战项目,让你瞬间读懂Python!
- [C++] C/C++结构体的区别
- 历时3个月终克2.1大礼包
- dnf红眼补丁在哪下载_dnf补丁下载到哪里
- 流程图连接线生成算法
- 地区 经纬度 json 数据
- 基于深度学习的图像修复
- nfc卡模式与标准模式_NFC的工作模式有哪些主动模式和被动模式的详细讲解
- 一年过去了,Uber 的致命事故给我们上了哪些生动的警示课?...
- [量化-029]陈光明投资哲学整理
- 百练4124:海贼王之伟大航路(状压DP)
热门文章
- 电线电缆使用时的安全要求和存放方法
- Python/gensim主题模型库
- ArabellaCPC 2019 B. Road to Arabella
- C++快速讲解(九):I/O操作、模板编程、容器、函数对象
- item_get - 获得suning商品详情
- Greenfoot游戏项目_水果篮子
- java怎么实现华为云文字识别,华为云语音识别:一句话识别API调用
- 不一样的SpringBoot注解
- 数独-图片定位分割数字
- Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)十六(商品排序,Thymeleaf快速入门,商品详情页的展示)