利用scons构建工程

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的关键字  CC是编译器的路径,剩下的是编译条件的环境变量。

Program也是scons的关键字  他的作用就是设置编译的文件名和路径一边找到编译目标。

print和makefi里面echo作用一样可以帮助调试或者看到一些过程

这样一个基本的scons的构建文件就写完了,在目录下运行 scons 就可以进行编译了。

一些其他复杂的应用后续介绍。

时间: 2024-08-28 10:02:11

利用scons构建工程的相关文章

利用scons构建project

scons有非常多相对于make构建系统的优秀特性,可是因为发展时间比較短如今的应用范围还是不太多,可以找到的资料也不是非常多. scons如今一大问题就是初始上手还是有点难度的,对于有python的基础的还是有点问题,毕竟他跟写成的python还是不一样的.尽管他遵循了python语言的语法,相同用python进行解析,可是我觉得他仅仅是由python进行解释,不全然等同于可运行的python. 这点我相信用一用之后会有理解. 先讲一下这个构建的结构: 整个程序的组织是仅仅有SConstruc

去除scons构建动态库的前缀lib

如何使用scons构建工程,请参考快速构建C++项目工具Scons,结合Editplus搭建开发环境. 编译SharedLibrary项目的时候,生产的so文件时自动加上lib, 例如: env = Environment() env.SharedLibrary('hello', sources=['hello.c']) 将以上保存成build.py, 执行编译命令 scons -f build.py 生成动态库so的文件名 libhello.so.这样做的好处,自然不用多说.这种lib前缀并不

Java开发技巧:如何利用Ant手动构建工程

利用Java语言构建工程,在这过程中主要是编译.打包.运行.部署等操作.将工程中的一个src文件夹用来放置工程的源代码,其中只有一个类的源代码. 在HelloWorld中新建HelloWorld.java代码如下: public class HelloWorld{ public static void main(String[] args){ System.out.println("Hello World!"); } } 在没有使用Ant之前,先采用手工的方式来构建这个HelloWor

[Gradle] 在 Eclipse 下利用 gradle 构建系统

转载自:http://www.ibm.com/developerworks/cn/opensource/os-cn-gradle/ 构建系统时候常常要用到 Ant, Maven 等工具,对于初学者来说,它们还是过于复杂,上手还是需要时间的.本文将向读者介绍一种全新的构建项目的方式 gradle,它简单.上手快,能大大节省项目的时间和成本. 在 eclipse 下利用 gradle 构建系统 基本开发环境 操作系统:本教程使用的为 Windows Vista Enterprise, 如果您的系统是

在 Eclipse 下利用 gradle 构建系统

在 eclipse 下利用 gradle 构建系统 基本开发环境 操作系统:本教程使用的为 Windows Vista Enterprise, 如果您的系统是 Linux 的,请选择下载对应版本的其他工具,包括开发工具.Java EE 服务器.Apache Ant.SoapUI. 开发工具:Eclipse IDE for SOA Developers 版本,请到 http://www.eclipse.org/downloads/ 网站下载,当然任何版本的 eclipse 都是可以的. Java

加密/解密&利用OpenSSL构建私有CA

在互联网安全及个人隐私状况日益严峻的今天,加密技术变得尤为重要并且不可或缺.在密码雪中,加密是指将明文信息隐匿起来,使之在缺少特殊信息时不可读.本文所讲的主要是在互联网传输数据时所用的加密方式.我们都知道OSI&TCP/IP网络参考模型,通常我们会把这两个模型分为通信子网和资源子网两部分,但是在构建网络的初期,信息从发送端送达到接受端都非常困难所以在设计模型之初并没有考虑过多的安全因素,以至于通信子网和资源子网都没有涉及到数据加密的内容.为了解决这个问题,网景公司在资源子网和通信子网之间添加了半

【C#】利用反射构建实体

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Reflection; namespace RftToModel { class Program { static void Main(string[] args) { var result = ToModel<TestModel>.GetDelegate_To

从头认识java-13.5 利用泛型构建复杂模型

这一章节我们来展示一下如何利用泛型构建复杂模型? 1.元组列表 我们之前已经说过元组是一个复杂的模型,能够返回多对象. package com.ray.ch11; import java.util.ArrayList; public class Test { public ArrayList<Tuple<A, B, C>> test() { ArrayList<Tuple<A, B, C>> list = new ArrayList<Tuple<

利用StarWind 构建SAN存储

StarWind iSCSI SAN 是一个iSCSI目标软件, 含有免费和付费版本. 该软件可安装在任何 32位或64位的Windows Server,使Windows Server 变为一台SAN . 支持多种虚拟化环境, 包括VMware, Microsoft Hyper-V和 Citrix. 在中小型企业中,可以部署其免费版本在测试环 境中进行测试和评估. 其免费版本也可以通过license直接升级为付费版本. 下面介绍其具体的安装和配置过程. 一.StarWind软件获取 软件站点: