使用 SCons 代替 Makefile 快速构建应用程序

2012-03-22 01:37 2971人阅读 评论(5) 收藏 举报
makefilefilegccpython工具build

目录(?)[+]

使用 SCons 代替 Makefile 快速构建应用程序

  • 作者:柳大·Poechant
  • 博客:blog.CSDN.net/Poechant
  • 邮箱:zhongchao.ustc@gmail.com
  • Copyright © 柳大·Poechant

0 Introduction

为 make 工具编写建造规则不是一件容易的事。它复杂的配置规则,即使是有经验的开发者也望而生畏。make 工具的许多替代品便因此而诞生,SCons 就是是其中之一。SCons 是一个用 Python 语言编写的类似于 make 工具的程序。与 make 工具相比较,SCons 的配置文件更加简单清晰明了,除此之外,它还有许多的优点。

SCons 支持多种操作系统平台,实现程序的构建可移植性。

1 Install

$ tar -xvf scons-2.0.1.tar$ cd scons-2.0.1
$ sudo python setup.py install

2 Hello World

2.1 Source File

#include <stdio.h>
#include <stdlib.h> int main(int argc, char* argv[])
{printf("Hello, SCons!\n"); return 0;
}

2.2 Config File

Program('helloscons.c')

2.3 Build

$ ls helloscons
helloscons.c  SConstruct$ cd helloscons/
$ scons
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
gcc -o helloscons.o -c helloscons.c
gcc -o helloscons helloscons.o
scons: done building targets. $ ls
helloscons  helloscons.c  helloscons.o  SConstruct$ ./helloscons
Hello, SCons!

2.4 Run

$ ./helloscons
Hello, SCons!

2.5 Clean

$ scons -c
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Cleaning targets ...
Removed helloscons.o
Removed helloscons
scons: done cleaning targets.$ ls -a
helloscons.c  SConstruct .sconsign.dblite

3 Improve your skills!

3.1 Specify your executable file name

Program('myscons, 'helloscons.c')

3.2 Be quiet when building!

$ scons -Q

3.3 A little more complicated program

Program('helloscons2', ['helloscons2.c', 'file1.c', 'file2.c'], LIBS = 'm', LIBPATH = ['/usr/lib', '/usr/local/lib'], CCFLAGS = '-DHELLOSCONS')$ scons -Q
gcc -o file1.o -c -DHELLOSCONS file1.c
gcc -o file2.o -c -DHELLOSCONS file2.c
gcc -o helloscons2.o -c -DHELLOSCONS helloscons2.c
gcc -o helloscons2 helloscons2.o file1.o file2.o -L/usr/lib -L/usr/local/lib -lm

3.4 Regular expression

Program('helloscons2', Glob('*.c')

4 Reference

  1. http://www.ibm.com/developerworks/cn/linux/l-cn-scons/index.html?ca=drs-

-

转载请注明来自“柳大的CSDN博客”:blog.CSDN.net/Poechant

-

使用 SCons 代替 Makefile 快速构建应用程序相关推荐

  1. 利用JMail组件快速构建邮件程序

    当你需要在VC程序中提供邮件支持功能的时候,你有许多种选择: 1)根据SMTP,POP3,MIME等协议从零开始实现.这要求熟悉RFC 821,RFC 822,RFC 1123, RFC 1652, ...

  2. 【实战演练】两种方法让 Docker 帮您快速构建应用程序

    写在前面 在这篇文章中,Deni Bertovic将向我们展示如何使用Docker来快速构建Haskell应用程序并生成Docker镜像. 备注: Haskell 是一种标准化的,通用的纯函数编程语言 ...

  3. 使用容器服务支持开发者快速搭建小程序后端服务

    场景描述 小程序作为一种新的开放能力被广泛应用于各业务场景,开发者可以快速地开发一个小程序,在微信可便捷地获取和传播,同时依赖微信平台原生能力获取出色的使用体验. 阿里云容器服务结合阿里云云原生能力帮 ...

  4. 微信小程序本地存储存储_如何利用本地存储构建快速的应用程序

    微信小程序本地存储存储 by Nikita Kozlov 由Nikita Kozlov 如何利用本地存储构建快速的应用程序 (How to leverage Local Storage to buil ...

  5. Java Swing快速构建窗体应用程序

    以前接触java感觉其在桌面开发上,总是不太方便,没有一个好的拖拽界面布局工具,可以快速构建窗体. 最近学习了一下NetBeans IDE 8.1,感觉其窗体设计工具还是很不错的 , 就尝试一下做了一 ...

  6. java窗口程序实例_Java Swing快速构建窗体应用程序

    以前接触java感觉其在桌面开发上,总是不太方便,没有一个好的拖拽界面布局工具,可以快速构建窗体. 最近学习了一下NetBeans IDE 8.1,感觉其窗体设计工具还是很不错的 , 就尝试一下做了一 ...

  7. 基于Bluemix快速构建部署一款Java小程序——微博影响力分析器

    一.前言 近年来IT界风云际会,各种新概念如大数据.云平台.虚拟化等,如雨后春笋般层出不穷.而云平台,可以说是近些年来引领时代新潮的边缘概念之一,各大厂商竞相推出各种云产品,抢占云市场高地.近期,IT ...

  8. 快速构建页面APP程序员的人生计划

    快速构建页面:bootstarp可视化工具 快速构建APP:APPCan工具 程序员人生计划参考:

  9. 一文带你了解s2i的原理使用,快速构建镜像

    源到镜像(S2I)是一个独立工具,在创建构建器镜像时非常有用.S2I是OpenShift 3中用于构建应用程序的主要策略.以下特性可能是您感兴趣: 速度 -使用S2I,组装过程可以执行大量复杂的操作, ...

最新文章

  1. Xilinx的FPGA命名规则
  2. 超好用的免费文献管理软件Mendeley 简易入门教程
  3. eclipse整体替换
  4. 如何使用JMX监控Kafka
  5. P4945-最后的战役【dp,离散化】
  6. 微信公开课讲师黄咪咪:熟读规则,玩转小游戏
  7. linux关于管道通信,球热心人帮忙 关于linux环境下管道通信
  8. bzoj 3119: Book(构造)
  9. 图像仿射变换之图像旋转 python
  10. ERROR: “System.Web.Mvc.Controller.File(string, string, string)”是一个“方法”
  11. 丹佛大学 电子与计算机学院,丹佛大学商业智能硕士.pdf
  12. react中dispatch_react-redux中dispatch是异步?
  13. Apache开启rewrite重写模块
  14. java中各种O的含义(PO,DO,VO,TO,QO,BO,DAO,DTO,POJO)
  15. js+css如何制作(音频)图标【切换播放动画】效果?
  16. 第26课:个人高效的秘籍 OKR 工作法
  17. 【ThreeJS基础教程-材质纹理篇】3.1 纹理知识进阶
  18. 编写选股公式、同花顺选股公式编写、编写涨停三阴线超短选股指标公式、编写选股公式...
  19. 无线WiFi安全渗透与攻防(一)之无线安全环境搭建
  20. iMatrix平台6.0.0.RC1版本可以在线使用了

热门文章

  1. nft platform usecase diagram
  2. iPad导入Mac:非常快!一气呵成,直接去photo里面选择,之后左上角倒出就好,颠覆之前windows上面的认知!
  3. 关于GC.Collect在不同机器上表现不一致问题
  4. js导入导出总结与实践
  5. 聊聊storm的IWaitStrategy
  6. 数据结构碎碎念(一)
  7. sql server的远程连接
  8. 《快速软件开发——有效控制与完成进度计划》
  9. hdu 2881(简单dp)
  10. 《机器学习实战》chapter02 K-近邻算法(KNN)