• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-159  評論-223  文章-30  trackbacks-0
            腳本源碼
               由于很多應用項目依賴諸多第三方開源庫,這些開源庫各有不同的核心目錄、庫目標和輸出位置,這里的核心目錄是指僅產生so庫的工程目錄,庫目標是指僅產生so庫的make目標,輸出位置是相對于核心目錄的,但不必是子目錄,可用..來回溯到父目錄的某位置,更高層目錄的位置,依次類推。為了統一支持它們,使用了一些技巧,詳見示例腳本如下
             1.PHONY: all clean lib core
             2
             3thirdlib=openssl-1.0.1u?build_ssl ACE_wrappers/ace json ncurses-6.0??lib
             4coremod=main
             5
             6dir = `echo $@ | awk -F? '{print $$1}'`
             7aim = `echo $@ | awk -F? '{print $$2}'`
             8out = `echo $@ | awk -F? '{print $$3}'`
             9
            10copy=\cp -Pf ${dir}/${out}/*.so* output
            11
            12define MAKE_SUBDIR
            13echo "${dir},${aim},${out}"\
            14if [ "$(MAKECMDGOALS)" != "clean" ]; then \
            15$(MAKE) ${aim} -${dir}\
            16if [ "$$is_cp" -eq "1" ]; then \
            17$(copy); \
            18fi \
            19else \
            20$(MAKE) clean -C ${dir}; \
            21fi 
            22endef
            23
            24all: lib core
            25
            26lib: $(thirdlib)
            27
            28$(thirdlib)::
            29    @is_cp=1; $(MAKE_SUBDIR)
            30
            31core: $(coremod)
            32
            33$(coremod)::
            34    @is_cp=0; $(MAKE_SUBDIR)
            35
            36clean: $(thirdlib) $(coremod)

            實現技巧
               1)使用?作為分隔符,所分隔的3個域依次為核心目錄、庫目標、輸出位置;使用awk來獲取各域,分別為dir、aim和out;在運行過程中,值dir一定非空,而aim為空則表示默認目標,out為空表示輸出位置即為dir目錄。
               2)copy為命令變量,功能為每當一個庫編譯完成后,將輸出的so庫拷貝到output下,并保持軟鏈接;對于有的開源庫,需在編譯前,使用對應的選項來調用configure,使其生成so庫。
               3)為了重用代碼,定義了MAKE_SUBDIR命令包,參數變量為is_cp,當is_cp為1時,表示當前編譯的是依賴庫,否則是主程序。 
               4)thirdlib和coremod為依賴文件,使用了雙冒號規則,這樣一來,只要在thirdlib中加入新的依賴庫,指定核心目錄、庫目標和輸出位置即可,其它地方不用改。
            posted on 2016-10-19 15:11 春秋十二月 閱讀(3256) 評論(0)  編輯 收藏 引用 所屬分類: System
            色诱久久久久综合网ywww| 精品国产青草久久久久福利| 久久人人爽人人爽人人片AV东京热| 91久久精品国产免费直播| 久久综合精品国产一区二区三区 | 久久丝袜精品中文字幕| 久久久久一级精品亚洲国产成人综合AV区| 国产精品免费久久久久电影网| 欧美久久久久久午夜精品| 一本色道久久综合| 国产精品美女久久久久| 久久综合色之久久综合| 国内精品久久人妻互换| 欧美精品一区二区久久| 狠色狠色狠狠色综合久久 | 亚洲国产精品无码久久久久久曰| 欧美一区二区三区久久综合| 国产综合精品久久亚洲| 久久久无码精品亚洲日韩蜜臀浪潮| 精品久久久久久无码人妻蜜桃| 亚洲中文字幕无码一久久区| 国产精品成人精品久久久 | 国内精品久久久久影院亚洲| 狠狠狠色丁香婷婷综合久久俺| 久久午夜免费视频| 国产真实乱对白精彩久久| 国产一级持黄大片99久久| 亚洲国产精品高清久久久| 亚洲国产婷婷香蕉久久久久久| 亚洲国产二区三区久久| 狠狠狠色丁香婷婷综合久久五月| 久久亚洲私人国产精品| av色综合久久天堂av色综合在| 久久久久亚洲AV无码专区桃色| 欧美亚洲另类久久综合| 狠狠色丁香久久综合婷婷| 久久丫精品国产亚洲av不卡| 精品久久久无码人妻中文字幕| 亚洲精品国产第一综合99久久| 欧美粉嫩小泬久久久久久久 | 7777久久亚洲中文字幕|