成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用SCons輕松建造自己的程序

系統 Linux
在軟件項目開發過程中,make 工具通常被用來建造程序。然而,編寫make工具的配置文件Makefile本身卻不是一件容易的事情。SCons 是一個用 Python 語言編寫的類似于 make 工具的程序。與 make 工具相比較,SCons 的配置文件更加簡單清晰明了。本文將簡單介紹如何在軟件開發項目中使用 SCons,通過本文,讀者可以學習到如何使用 SCons 來建造自己的程序項目。

 在軟件項目開發過程中,make 工具通常被用來建造程序。make 工具通過一個被稱為 Makefile 的配置文件可以自動的檢測文件之間的依賴關系,這對于建造復雜的項目非常有幫助,然而,編寫 Makefile 本身卻不是一件容易的事情。SCons 是一個用 Python 語言編寫的類似于 make 工具的程序。與 make 工具相比較,SCons 的配置文件更加簡單清晰明了,除此之外,它還有許多的優點。本文將簡單介紹如何在軟件開發項目中使用 SCons,通過本文,讀者可以學習到如何使用 SCons 來建造自己的程序項目。

make 這個工具自上個世紀 70 年代 Stuart Feldman 在貝爾實驗室開發出以來,就一直是類 UNIX 程序員的***之一。通過檢查文件的修改時間,make 工具可以知道編譯目標文件所要依賴的其他文件。在復雜的項目中,如果只有少數幾個文件修改過,make 工具知道僅僅需要對哪些文件重新編譯就可以確保目標程序被正確的編譯鏈接。這樣做的好處就是在編譯中,不僅可以節省大量的重復輸入,還可以確保程序可以被正確的鏈接,縮短編譯的時間。雖然如此,但是為 make 工具編寫建造規則卻不是一件容易的事。它復雜的配置規則,即使是有經驗的開發者也望而生畏。make 工具的許多替代品便因此而誕生,SCons 就是是其中之一。SCons 是一個用 Python 語言編寫的類似于 make 工具的程序。與 make 工具相比較,SCons 的配置文件更加簡單清晰明了,除此之外,它還有許多的優點。

SCons 簡介

SCons 是一個開放源代碼、以 Python 語言編寫的下一代的程序建造工具。它最初的名字是 ScCons, 基于由 perl 語言編寫的 Cons 軟件開發而成,它在 2000 年 8 月獲得了由 Software Carpentry 舉辦的 SC 建造比賽的大獎。現在 ScCons 已經被改名為 SCons,目的是為了表示不再與 Software Carpentry 有聯系,當然,還有一個目的,就是為了更方便的輸入。

作為下一代的軟件建造工具,SCons 的設計目標就是讓開發人員更容易、更可靠和更快速的建造軟件。與傳統的 make 工具比較,SCons 具有以下優點:

●使用 Python 腳本做為配置文件

●對于 C,C++ 和 Fortran, 內建支持可靠自動依賴分析 . 不用像 make 工具那樣需要 執行"make depends"和"make clean"就可以獲得所有的依賴關系。

●內建支持 C, C++, D, Java, Fortran, Yacc, Lex, Qt,SWIG 以及 Tex/Latex。 用戶還可以根據自己的需要進行擴展以獲得對需要編程語言的支持。

●支持 make -j 風格的并行建造。相比 make -j, SCons 可以同時運行 N 個工作,而 不用擔心代碼的層次結構。

●使用 Autoconf 風格查找頭文件,函數庫,函數和類型定義。

●良好的夸平臺性。SCons 可以運行在 Linux, AIX, BSD, HP/UX, IRIX, Solaris, Windows, Mac OS X 和 OS/2 上。

安裝 SCons

SCons 支持多種操作系統平臺,并為各個系統制作了易于安裝的文件,因此在各個系統平臺上的安裝方法不盡相同,在 SCons 的官方網站上可以查每個平臺的具體安裝方法。 如果 SCons 沒有為你的系統制作相應的安裝包,你也可以下載 SCons 的源代碼,直接進行安裝。 首先,從 SCons 的網站上下載***的 SCons 源代碼包(目前 SCons 的***版本是 2.0.1)。 其次,解壓下載的源代碼。視下載的源代碼包的格式不同而有不同的方法,在 Windows 平臺上,可是使用 winzip 或者其他類似的工具解壓。在 Linux 平臺上,對于 tar 包,使用 tar 命令進行解壓,如:

$ tar -zxf scons-2.0.1.tar.gz

然后切換進入解壓后的目錄進行安裝,如

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

命令執行如果沒有錯誤,那么 scons 就被安裝到系統上了。對于 Linux 來說,scons 會默認安裝到 /usr/loca/bin 目錄下,而在 Windows 平臺上,則會被安裝到 C:\Python25\Scripts 下。#p#

使用 SCons

在 SCons 安裝完成后,我們就可以使用 SCons 來建造我們的程序或者項目了。像很多編程書籍那樣,在這里我們也通過一個簡單的 helloscons 例子來說明如何使用 SCons。例子 helloscons 包含兩個文件 :

$ ls helloscons
helloscons.c SConstruct

其中 helloscons.c 是程序的源文件,SConstruct 是 scons 的配置文件,類似使用 make 工具時的 Makefile 文件,因此,為了編譯你的項目,需要手工創建一個 SConstruct 文件(注意:文件名是大小寫敏感的)。不過,在編譯的時候不需要指定它。 要編譯這個例子,切換到 helloscons 的目錄下,運行 scons 命令,如下:

$ 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.

來查看一下運行 scons 命令后得到的結果 :

$ ls
helloscons helloscons.c helloscons.o SConstruct

建造結束后,得到了二進制文件 helloscons 以及編譯的過程中產生的一些以 .o 結尾的目標文件。試運行 helloscons 一下 , 會得到 :

$ ./helloscons
Hello, SCons!

現在讓我們回過頭來解析一下 helloscons 這個例子 . helloscons.c 是這個例子里的唯一一個源代碼文件,它所做的事就是在控制臺上輸出一行簡單的"Hello,SCons", 它的源代碼如下:

清單 1. helloscons.c

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

作為項目建造規則的配置文件 SConstruct 的內容如下 :

清單 2. SConstruct 文件

Program('helloscons.c')

你可能很驚訝 SConstruct 的內容只有一行,然而事實確實如此,它比傳統的 Makefile 簡單很多。SConstruct 以 Python 腳本的語法編寫,你可以像編寫 Python 腳本一樣來編寫它。其中的 Program 是編譯的類型,說明你準備想要建造一個可執行的二進制程序,它由 helloscons.c 文件來生成。在這里,沒有指定生成的可執行程序的名字。不過不用擔心,SCons 會把源代碼文件名字的后綴去掉,用來作為可執行文件的名字。在這里,我們甚至不需要像 Makefile 那樣指定清理的動作,就可以執行清理任務。在 SCons 中,執行清理任務由參數 -c 指定,如下 :

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

如果你不想直接編譯可執行的二進制文件,那也沒有關系。SCons 支持多種編譯類型,你可以根據自己的需要,任意選用其中的一種。SCons 支持的編譯類型有:

●Program: 編譯成可執行程序(在 Windows 平臺上即是 exe 文件),這是最常用的一種編譯類型。

●Object: 只編譯成目標文件。使用這種類型,編譯結束后,只會產生目標文件。在 POSIX 系統中,目標文件以 .o 結尾,在 Windows 平臺上以 .OBJ 結尾。

●Library: 編譯成庫文件。SCons 默認編譯的庫是指靜態鏈接庫。

●StaticLibrary: 顯示的編譯成靜態鏈接庫,與上面的 Library 效果一樣。

●SharedLibrary: 在 POSIX 系統上編譯動態鏈接庫,在 Windows 平臺上編譯 DLL。

這個簡單的 SConstruct 的配置文件從一個側面說明了使用 SCons 來建造程序是多么的簡單。 在實際的項目開發中,程序的建造規則遠比 helloscons 這個例子復雜。不過,這些都不是問題,你可以像擴展你自己的 Python 腳本文件那樣去擴展 SConstruct. 如果你不想使用 SConstruct 為你設置的默認可執行文件的名字,而是選擇你自己喜歡的名字,如 myscons,可以把 SConstruct 的內容修改為 :

Program('myscons, 'helloscons.c')

其中 myscons 就是你想要的可執行文件的名字,你可以把它換成任意你喜歡的名字, 不過有點注意的是,這個名字必須放在***位。 然后在 helloscons 目錄下運行 scons 命令,就會得到 myscons 這個可執行文件,如 下:

$ scons -Q
gcc -o helloscons.o -c helloscons.c
gcc -o myscons helloscons.o

其中的 -Q 參數是減少編譯時的由 scons 產生的冗余信息。 如果你的項目由多個源文件組成,而且你想指定一些編譯的宏定義,以及顯式的指定使用某些庫,這些對于 SCons 來說,都是非常簡單的事情。我們的另外一個例子 helloscons2 很好的說明這種情況。 helloscons2 由 3 個源文件組成 , 它們是 helloscon2.c, file1.c, file2.c,另外指定了編譯的選項,同時還指定了使用哪些具體的庫。讓我們來看一下 helloscons2 的 SConstruct 文件 :

Program('helloscons2', ['helloscons2.c', 'file1.c', 'file2.c'],
LIBS = 'm',
LIBPATH = ['/usr/lib', '/usr/local/lib'],
CCFLAGS = '-DHELLOSCONS')

正如你想像的那樣,這樣一個配置文件并不復雜 . 該 SConstruct 文件指出,它將生成一個名叫 helloscons2 的可執行程序,該可執行程序由 helloscons2.c, file1.c 和 file2.c 組成。注意,多個源文件需要放在一個 Python 列表中。如果你的源程序代碼文件很多,有十幾個甚至上百個,那不要一個個的將他們都列出來,你可以使用 glob('*.c') 來代替源代碼列表。如下 :

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

配置文件中 LIBS,LIBAPTH 和 CCFLAGS 是 SCons 內置的關鍵字,它們的作用如下:

●LIBS: 顯示的指明要在鏈接過程中使用的庫,如果有多個庫,應該把它們放在一個列表里面。這個例子里,我們使用一個稱為 m 的庫。

●LIBPATH: 鏈接庫的搜索路徑,多個搜索路徑放在一個列表中。這個例子里,庫的搜索路徑是 /usr/lib 和 /usr/local/lib。

●CCFLAGS: 編譯選項,可以指定需要的任意編譯選項,如果有多個選項,應該放在一個列表中。這個例子里,編譯選項是通過 -D 這個 gcc 的選項定義了一個宏 HELLOSCONS。

運行 scons 命令的時候,可以看到這些變量如何被使用的,讓我們執行一下 scons 命令 :

$ 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

scons 命令的輸出顯示了可執行程序 helloscons2 如何由多個源文件而生成,以及在 SConstruct 中定義的 LIBS,LIBPATH 和 CCFLAGS 如何被使用。 可見,即使對于復雜的項目,SCons 的編譯配置文件也很簡單。除此之外,SCons 也提供了很多功能以適應不同的需要,如果讀者想更深入的了解如何使用 SCons,可以參考 SCons 的幫助手冊。

總結

本文簡單介紹了 SCons 的特點,如何安裝 SCons,以及通過例子來說明如何在項目中使用 SCons。 作為下一代的軟件建造工具,SCons 使用 Python 語言作為配置文件,不但功能強大,而且簡單易用,對于跨平臺的項目,非常適合。 如果你厭煩了 make 工具的那種復雜的編寫規則,嘗試一下新鮮的 SCons 吧。

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

【編輯推薦】

  1. 用Python擴展和延伸Nautilus
  2. DropBox使用Python的6個經驗分享
  3. 你不知道的 Python裝飾器的一個妙用
責任編輯:黃丹 來源: IBMDW
相關推薦

2011-05-17 10:46:14

TAP

2013-06-18 17:23:35

移動互聯百度SiteApp建造WebApp

2009-01-11 09:35:36

GoogleJuniper路由器

2024-01-18 07:53:37

2010-10-14 14:31:31

Ubuntu發行版

2018-09-19 08:50:45

PySimpleGUIGUIPython

2023-12-29 08:06:40

開源軟件導航前端

2020-02-25 22:41:41

程序員技能開發者

2012-04-26 13:48:56

iPhone應用發布Ad Hoc

2022-11-29 12:53:36

機器人物理MIT

2012-03-13 15:49:43

win7

2009-06-17 14:29:50

java程序代碼

2009-10-26 13:25:05

Linux Shell

2011-07-20 10:13:28

2020-08-10 06:22:02

繪圖命令dot

2021-11-22 23:42:02

Go監控程序

2017-12-18 09:11:02

TensorFlow行列程序

2015-04-27 14:22:39

程序員提升自己價值

2024-01-05 08:22:52

GlanceJetpack插件

2010-04-29 16:12:16

微軟組策略
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久精品国产99国产精品 | 大学生a级毛片免费视频 | 精品日韩一区二区 | 国产精品片aa在线观看 | 亚洲精品久久久久avwww潮水 | 午夜国产精品视频 | 99精彩视频 | 天天射天天操天天干 | 久久国产欧美日韩精品 | 国产aⅴ精品 | 91亚洲国产 | 一级黄色毛片子 | 欧美黄色片在线观看 | 国产视频1区 | 最新国产在线 | 中文字幕av在线 | 国产成人精品a视频 | 精品日韩一区二区 | 国内成人免费视频 | 四虎av电影 | 自拍 亚洲 欧美 老师 丝袜 | 亚洲电影一区 | 欧美一级欧美一级在线播放 | 综合精品 | 国产欧美一区二区久久性色99 | 久久99精品久久 | 超碰伊人 | 久久精品二区 | 国产精品视频yy9299一区 | av官网在线 | 久久久久久久亚洲精品 | 欧美日韩成人一区二区 | 日韩亚洲视频在线 | 国产在线精品一区二区 | 国产精品久久国产精品 | 精品欧美色视频网站在线观看 | 久草热线 | 国产精品久久久久久久久久 | 久久亚洲精品国产精品紫薇 | 成人一区二区三区在线 | 国产高清一区二区 |