還在為寫乙個makefile發愁嗎?還在為難記的make引數而苦惱嗎?有了scons一切都邊的簡單了。最近研究了下scons,發現和makefile相比,soncs編譯c和c++程式真的太方便了。搞程式什麼做好,當然是簡單實用最好下面大家就一起感受下簡單的scons吧。
1、使用scons編譯程式
在程式目錄下執行命令如下:(前提是你已經安裝scons了喲)
scons
噢,噢,這個好像沒啥簡單的哈,和make差不多嘛。是嗎?那就繼續瞧好吧您
2、清空編譯程式
在程式目錄下執行命令如下
scons -c
這個嘛,,沒什麼吧,和make clean也沒簡單多少呀,不就少了幾個字母嗎,是嗎?那咱還繼續吧
3、將cpp或c檔案編譯為執行檔案
在源檔案目錄中建立乙個sconstruct的檔案,並在其中新增如下內容
program('testpro1', glob('*.cpp'))
儲存後執行1中的scons命令
這就完事了??是的!這就完事了,只要你程式的語法沒錯,應該會生成乙個名字叫testpro1的程式,如果在window下會生成乙個testpro1.exe的程式喲,有沒有很酷?
將cpp或c檔案編譯為執行檔案有如下2中方式
方式1:
program('程式名', split('程式檔案序列
空格分隔'))
方式2:
program('程式名', glob('*.cpp'))
4、編譯的時候想新增上-g -o2 -wall引數
使用環境變數
env=environment(ccflags = ['-g','-o3','-wall'])
生成程式的時候使用env.program(。。。。)即可
例如:env=environment(ccflags = ['-g','-o3','-wall'])
env.program('程式名', glob('*.cpp'))
5、編譯生成靜態庫
方法1:使用library關鍵字
library('庫名', split('程式檔案序列,空格分隔')
或library('庫名', glob('*.cpp'))
方法2:使用顯示關鍵字staticlibrary
staticlibrary('庫名', split('程式檔案序列,空格分隔'))
或staticlibrary('庫名', glob('*.cpp'))
說明:庫名不要前面的lib和字尾,如庫libtestdota.a生成時的庫名為testdota
6、編譯生成動態庫
使用關鍵字sharedlibrary
sharedlibrary('庫名', split('程式檔案序列,空格分隔'))
或sharedlibrary('庫名', glob('*.cpp'))
說明:庫名不要前面的lib和字尾,如庫libtestso.so生成時的庫名為testso
7、程式或庫中引用已有的庫
使用關鍵字libs和libpath
libs後跟程式需要引用的庫名
libpath後跟程式引用庫的時候所需的庫檔案路徑
如:program('testpro','prog.c', libs = ['m','m2'], libpath = ['/usr/lib', '/usr/local/lib'])
生成的testpro程式要引用庫libm.so和libm2.so,庫檔案路徑在/usr/lib和/usr/local/lib下
8、指定程式編譯過程中需要查詢的標頭檔案路徑
使用關鍵字cpppath
例如:program('hello','hello.c', cpppath = ['include', '/home/project/inc'])
生成hello程式的時候hello.c可能引用了其他的標頭檔案,在編譯hello.c的時候會查詢./include和/home/project/inc下是否有需要的標頭檔案
到此一些常用的makefile的功能基本都有了,有沒有覺得很簡單那
scons使用說明
前言 make 這個工具自上個世紀 70 年代 stuart feldman 在貝爾實驗室開發出以來,就一直是類 unix 程式設計師的最愛之一。通過檢查檔案的修改時間,make 工具可以知道編譯目標檔案所要依賴的其他檔案。在複雜的專案中,如果只有少數幾個檔案修改過,make 工具知道僅僅需要對哪些...
scons 使用VariantDir 說明
將編譯生成的檔案和源 目錄相互分離 variantdir variant dir,src dir,duplicate env.variantdir variant dir,src dir,duplicate sconscript script,variant dir,duplicate varian...
linux scons 實用說明(一) g選項
還在為寫乙個makefile發愁嗎?還在為難記的make引數而苦惱嗎?有了scons一切都邊的簡單了。最近研究了下scons,發現和makefile相比,soncs編譯c和c 程式真的太方便了。搞程式什麼做好,當然是簡單實用最好下面大家就一起感受下簡單的scons吧。1 使用scons編譯程式 在程...