日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

SCons命令 之 从入门到精通

發(fā)布時(shí)間:2025/3/15 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SCons命令 之 从入门到精通 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

SCons命令?之?從入門(mén)到精通

(2005-12-05 11:41:13) 轉(zhuǎn)載▼
標(biāo)簽:

雜談

分類(lèi):計(jì)算機(jī)與 Internet
sconstruct是執(zhí)行Scons的腳本文件,是Python腳本。 c:>scons執(zhí)行sconstruct中腳本 Build command insconstruct: 1.Program('hello.c')?編譯hello.c可執(zhí)行文件,根據(jù)系統(tǒng)自動(dòng)生成(hello.exe on Windows;?hello onPOSIX) ? Program('new_hello','hello.c')指定Output文件名(new_hello.exe on Windows; new_hello onPOSIX) ? Program(['main.c', 'file1.c','file2.c']) 編譯多個(gè)文件,Output文件名以第一個(gè)文件命名(main.exe;main)
? Program('program', Split('main.c file1.c file2.c'))

2.Object('hello.c')編譯hello.c目標(biāo)文件,根據(jù)系統(tǒng)自動(dòng)生成(hello.obj on Windows; hello.o onPOSIX) 3.Library('foo', ['f1.c', 'f2.c','f3.c']) 編譯library ? SharedLibrary('foo', ['f1.c','f2.c', 'f3.c']) 編譯 static library ? StaticLibrary('foo', ['f1.c','f2.c', 'f3.c']) 編譯 shared library
4.Program('prog.c', LIBS=['foo', 'bar'], LIBPATH='.')連接庫(kù),不需加后綴或是前綴
5.判斷源文件是否修改 ? SourceSignatures('MD5')????根據(jù)內(nèi)容是否改變,默認(rèn)方式 ? SourceSignatures('timestamp') 根據(jù)修改時(shí)間
6.判斷目標(biāo)文件是否改變 ? TargetSignatures('build')??根據(jù)編譯結(jié)果
?? TargetSignatures('content')?根據(jù)文件內(nèi)容,如果只是加了句注釋,將不會(huì)被重新編譯 7.Ignore(hello, 'hello.h')? 忽略某個(gè)依賴(lài)關(guān)系
8.Depends(hello, 'other_file') 明確依賴(lài)關(guān)系
? Executive command in shell 1. scons -c??clean 2. scons -Q?只顯示編譯信息,去除多余的打印信息 3. scons -Q--implicit-cache hello 保存依賴(lài)關(guān)系 ???????????????--implicit-deps-changed??強(qiáng)制更新依賴(lài)關(guān)系 ??????????????--implicit-deps-unchanged?強(qiáng)制使用原先的依賴(lài)關(guān)系,即使已經(jīng)改變 ? Key words: LIBS LIBPATH CCFLAGS CPPPATH :Program('hello.c', CPPPATH =['include', '/home/project/inc']) Concept: 1.Node Objects???文件或是目錄 ?? hello_c =File('hello.c') ??Program(hello_c)????????????????File Node Objects ?? classes =Dir('classes') ?? Java(classes,'src')???????????????Directory Node Objects

?

?? xyzzy =Entry('xyzzy')??????????Either File or Directory Node Objects


1.創(chuàng)建環(huán)境變量 ?? env = Environment() ??env.Program('foo.c')???????根據(jù)不同系統(tǒng)創(chuàng)建不同的編譯環(huán)境變量 ?? 也可以改變: ?? env = Environment(CC = 'gcc',CCFLAGS ='-O2')
2.復(fù)制環(huán)境變量 ?? env = Environment(CC = 'gcc') ?? opt = env.Copy(CCFLAGS = '-O2')
??? dbg = env.Copy(CCFLAGS = '-g')

3.獲取環(huán)境變量 ?? env = Environment() ?? print "CC is:",env['CC']
4.擴(kuò)展環(huán)境變量 ?? env = Environment()
??? print "CC is:",env.subst('$CC') 5.替換環(huán)境變量 ?? env = Environment(CCFLAGS ='-DDEFINE1')
????env.Replace(CCFLAGS = '-DDEFINE2')
????env.Program('foo.c') 6.尾部增加環(huán)境變量值 ?? env = Environment(CCFLAGS ='-DMY_VALUE')
????env.Append(CCFLAGS = ' -DLAST')
????env.Program('foo.c') 7.頭部添加環(huán)境變量值 ?? env = Environment(CCFLAGS ='-DMY_VALUE')
??? env.Prepend(CCFLAGS = '-DFIRST ')
??? env.Program('foo.c') 使用 1.看編譯命令未展開(kāi) Input: ??? env = Environment(CCFLAGS ='-DFOO')
???? print "CCCOM is:",env['CCCOM'] Output: ??? CCCOM is: $CC$CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -c -o $TARGET$SOURCES

2.看編譯命令已展開(kāi) Input: ?? env = Environment(CCFLAGS = '-DFOO')
????print "CCCOM is:",env.subst('$CCCOM') Output: ? ?? CCCOM is: gcc -DFOO -c-o

總結(jié)

以上是生活随笔為你收集整理的SCons命令 之 从入门到精通的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。