使用 SCons 代替 Makefile 快速構建應用程式

鍾超發表於2012-03-22

使用 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

-

相關文章