利用scons构建project
scons有非常多相对于make构建系统的优秀特性,可是因为发展时间比較短如今的应用范围还是不太多,可以找到的资料也不是非常多。
scons如今一大问题就是初始上手还是有点难度的,对于有python的基础的还是有点问题,毕竟他跟写成的python还是不一样的。尽管他遵循了python语言的语法,相同用python进行解析,可是我觉得他仅仅是由python进行解释,不全然等同于可运行的python。
这点我相信用一用之后会有理解。
先讲一下这个构建的结构:
整个程序的组织是仅仅有SConstruct这个文件的名字是固定的,这点和Makefile是一样的。
这个脚本就相当于makefile,这里面还能够挂接其它的python脚本进行构建的扩展,对于比較大的系统还是非常有作用的。
构建步骤就是先要建立一个SConstruct文件,这个文件能够选择成为py格式这样能够方便的帮我们分析里面是不是有语法错误。
以下就要写里面的内容了,内容的组织遵循python语法。
这里给出一个最简单的编译hello.c的文件。
import os
import sys
print "call program 'hello.c'"
#CC = 'arm-none-eabi-gcc'
CPPPATH = '/opt/arm-2010.09/bin'
env = Environment(CC='/opt/arm-2010.09/bin/arm-none-eabi-gcc',CCFLAGS='-O2')
#env.Append(CCFLAGS='-O2')
#env = Environment(ENV=os.environ,tools=['arm-none-eabi-gcc'])
env.Program('src/go.c')
print "exit"
相信有几本的python经验的都能看懂个大概,这里就解释里面的主要函数的意义。
Environment是环境变量设置的函数,里面CC和CCFLAGS是scons的keyword CC是编译器的路径。剩下的是编译条件的环境变量。
Program也是scons的keyword 他的作用就是设置编译的文件名称和路径一边找到编译目标。
print和makefi里面echo作用一样能够帮助调试或者看到一些过程
这样一个主要的scons的构建文件就写完了,在文件夹下执行 scons 就能够进行编译了。
一些其它复杂的应用兴许介绍。
利用scons构建project的更多相关文章
- Spark:利用Eclipse构建Spark集成开发环境
前一篇文章“Apache Spark学习:将Spark部署到Hadoop 2.2.0上”介绍了如何使用Maven编译生成可直接运行在Hadoop 2.2.0上的Spark jar包,而本文则在此基础上 ...
- [Gradle] 在 Eclipse 下利用 gradle 构建系统
转载自:http://www.ibm.com/developerworks/cn/opensource/os-cn-gradle/ 构建系统时候常常要用到 Ant, Maven 等工具,对于初学者 ...
- springboot+mybatis-puls利用swagger构建api文档
项目开发常采用前后端分离的方式.前后端通过API进行交互,在Swagger UI中,前后端人员能够直观预览并且测试API,方便前后端人员同步开发. 在SpringBoot中集成swagger,步骤如下 ...
- 全面解读Python Web开发框架Django,利用Django构建web应用及其部署
全面解读Python Web开发框架Django Django是一个开源的Web应用框架,由Python写成.采用MVC的软件设计模式,主要目标是使得开发复杂的.数据库驱动的网站变得简单.Django ...
- 利用Dockerfile构建一个基于centos 7,包括java 8, tomcat 7,php ,mysql+mycat的镜像
Dockerfile内容如下: FROM centos MAINTAINER Victor ivictor@foxmail.com WORKDIR /root RUN rm -f /etc/yum.r ...
- 利用node构建本地服务
利用node构建本地服务 首先安装下node.js,地址为https://nodejs.org/en/,然后安装npm. node.js的中文api地址http://nodeapi.ucdok.com ...
- 去除scons构建动态库的前缀lib
如何使用scons构建工程,请参考快速构建C++项目工具Scons,结合Editplus搭建开发环境. 编译SharedLibrary项目的时候,生产的so文件时自动加上lib, 例如: env = ...
- 利用 vue-cli 构建一个 Vue 项目
一.项目初始构建 现在如果要构建一个 Vue 的项目,最方便的方式,莫过于使用官方的 vue-cli . 首先,咱们先来全局安装 vue-cli ,打开命令行工具,输入以下命令: $ npm inst ...
- 利用openssl构建根证书-服务器证书-客户证书
利用openssl构建根证书-服务器证书-客户证书 OpenSSL功能远胜于KeyTool,可用于根证书,服务器证书和客户证书的管理 一.构建根证书 1.构建根证书前,需要构建随机数文件(.rand) ...
随机推荐
- WebApi实现IHttpControllerSelector问题
一.让Web API路由配置也支持命名空间参数/// <summary> /// controller /// 选择器 /// </summary> ...
- 冒泡 [Python]
冒泡Python class BubbleSort: def __init__(self): self.initArr() def initArr(self): self.arrInfo = [60, ...
- NX自动出图 (更新啦)
1.创建模板类零件图纸 2.创建顶针类零件图纸 3.创建镶件类零件图纸 4.自动创建孔表
- Linux下如何从mysql数据库里导出导入数据
https://blog.csdn.net/u012884402/article/details/47337701 一. 表的导入 1.进入数据库 mysql 数据库名 2.查看表 show tab ...
- CAD绘制一个单行文字(com接口VB语言)
主要用到函数说明: _DMxDrawX::DrawText 绘制一个单行文字.详细说明如下: 参数 说明 DOUBLE dPosX >文字的位置的X坐标 DOUBLE dPosY 文字的位置的Y ...
- Spring框架系列(五)--面向切面AOP
背景: 当需要为多个不具有继承关系的对象引入一个公共行为,例如日志.权限验证.事务等功能时,如果使用OOP,需要为每个对象引入这些公共 行为.会产生大量重复代码,并且不利用维护.AOP就是为了解决这个 ...
- freemarker使用map替换ftl中相关值
ftl文件demo01.ftl <html> <head> <title>Welcome!</title> </head> <body ...
- Ajax 调用案例及错误捕捉
function postFunc() { var scoreResultStr = readyData(); $.ajax({ type: "post", url: " ...
- 小程序 textarea ios兼容解决
今天遇到,在小程序里textarea会存在一定的兼容性问题,textarea有默认的内边距,在安卓和ios显示的时候,ios边距会比安卓的大很多. 解决办法: 通过 wx.getSystemInfoS ...
- 前k大金币(动态规划,递推)
/* ///题解写的很认真,如果您觉得还行的话可以顶一下或者评论一下吗? 思路: 这题复杂在要取前k大的结果,如果只是取最大情况下的金币和,直接 动态规划递归就可以,可是前k大并不能找出什么公式,所以 ...