2009年6月7日 星期日

SCons 簡單介紹一下

apt-cache show scons 裡面的描述是
 SCons is a make replacement providing a range of enhanced features such
 as automated dependency generation and built in compilation cache
 support.  SCons rule sets are Python scripts so as well as the features
 it provides itself SCons allows you to use the full power of Python
 to control compilation.
一個 C/C++ 的軟體專案一定需要一個自動化編譯的工具作為輔助來管理,這樣可以簡化許多繁複的步驟,所以也有人將 SCons 拿來跟 GNU Build System (Autotools) 還有 CMake 做比較。

例如要編譯一個簡單的 Hello World 執行程式
/* hello.c */
#include <stdio.h>
int main(int argc, char* argv[])
{
    printf("Hello World!\n");
    return 0;
}
最初的方法一定是直接下指令
$ gcc -o hello hello.c
如果是學過 GNU Make 的話就會知道要寫一個 Makefile 來用,內容像是
# Makefile
hello: hello.c
    $(CC) -o $@ $<
clean:
    $(RM) hello
.PHONY: hello clean
不過如果是 SCons 的話,就是寫一個 SConstruct 的文字檔,內容像是
# SConstruct
Program('hello.c')
接下來就可以下指令 scons 來編譯,如果要清除的話就可以下指令 scons -c 來做
這樣是不是感覺輕鬆許多了呢~ ;-)
當然如果熟悉原本 GNU Make 的人也可以寫一個 Makefile 來用,內容像是
# Makefile
all:
    @scons -Q
clean:
    @scons -Q -c
.PHONY: all clean
這樣就可以利用 SCons 簡潔的語法而且又維持原本 GNU Make 的使用習慣了~ ;-)

SCons 更詳細的使用方法請見官方的說明文件 http://www.scons.org/documentation.php

2 則留言:

johncylee 提到...

不用寫 Makefile...

make hello

就行了。

$4 提到...

這篇文章的重點在談論編譯流程的自動化管理,感謝您提供 GNU Make 的默認規則使用方法。