• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 一套完整的makefile樣板

    發表于:2007-05-25來源:作者:點擊數: 標簽:樣板一套Makefile近來經常
    近來,經??吹接腥嗽儐杕akefile的寫法,這里根據本人經驗給出一個應用系統的完整例子,便于各位參考。 [b:569e1de998]應用系統的目錄結構如下:[/b:569e1de998] [code:1:569e1de998] ~/bin可執行程序目錄 ~/etc配置文件目錄 ~/inc頭文件目錄 ~/lib函數庫文

    近來,經??吹接腥嗽儐杕akefile的寫法,這里根據本人經驗給出一個應用系統的完整例子,便于各位參考。
    [b:569e1de998]應用系統的目錄結構如下:[/b:569e1de998]
    [code:1:569e1de998]
    ~/bin 可執行程序目錄
    ~/etc 配置文件目錄
    ~/inc 頭文件目錄
    ~/lib 函數庫文件目錄
    ~/log 日志文件目錄
    ~/src 源程序文件目錄
    ~/src/lib 函數庫源程序目錄
    ~/src/lib/LIB_1 函數庫libLIB_1源程序目錄
    ~/src/APP_A 子系統APP_A源程序目錄
    ~/src/APP_A/mod_a 子系統APP_A模塊mod_a源程序目錄
    ~/.profile
    ~/makefile
    [/code:1:569e1de998]
    [b:569e1de998]~/makefile文件內容如下:[/b:569e1de998]
    [code:1:569e1de998]
    all:
    @MakeSubDir() \
    { \
    for DIR in `ls|grep&nbs'''l''';ls|grep -v&nbs'''l'''`; do \
    if [ -d $${DIR} ]; then \
    cd $${DIR}; \
    MakeSubDir; \
    if [ -f makefile -o -f Makefile ]; then \
    echo ""; \
    pwd; \
    make all; \
    fi; \
    cd ..; \
    fi; \
    done; \
    }; \
    MakeSubDir

    tar:
    @tar -cf `date +%Y%m%d-%H%M%S`.tar .profile `ls|grpbpv&nbs;'''.tar''''`
    [/code:1:569e1de998]
    [b:569e1de998]~/src/lib/LIB_1/makefile文件內容如下:[/b:569e1de998]
    [code:1:569e1de998]
    ALL: INFO all

    BASEDIR = $(HOME)
    INC = $(BASEDIR)/inc
    LIB = $(BASEDIR)/lib

    PRDNAME = $(LIB)/libLIB_1

    PRODUCT = $(PRDNAME).a $(PRDNAME).so

    OBJS = LIB_1_f1.o LIB_1_f2.o

    AR = ar <特定平臺ar可選參數>
    CC = clearcase/" target="_blank" >cc <特定平臺cc可選參數>

    all: $(PRODUCT)

    $(PRDNAME).a: $(OBJS)
    @echo "  Making $@ ..."
    @$(AR) -r $@ $(OBJS)

    $(PRDNAME).so: $(OBJS)
    @echo "  Making $@ ..."
    @$(CC) -G -o $@ $(OBJS)

    .c.o: *.h $(INC)/*.h
    @echo "  Compiling $< ..."
    @$(CC) -c -I$(INC) $<

    INFO:
    @echo "  make all - samenpwh&nbs;'''make'''' except this message"
    @echo "  make clear - remove object files"
    @echo "  make clean - remove all object and target files"
    @echo ""

    clear: FORCE
    @rm -f *.o

    clean: FORCE clear
    @rm -f $(PRODUCT)

    FORCE:
    [/code:1:569e1de998]
    [b:569e1de998]~/src/APP_A/mod_a/makefile文件內容如下:[/b:569e1de998]
    [code:1:569e1de998]
    ALL: INFO all

    BASEDIR = $(HOME)
    INC = $(BASEDIR)/inc
    LIB = $(BASEDIR)/lib
    BIN = $(BASEDIR)/bin

    MODULE = $(BIN)/APP_A_mod_a
    TESTER = APP_A_mod_a_t
    PRODUCT = $(SERVER) $(TESTER)

    CC = cc <特定平臺cc可選參數>

    all: $(PRODUCT)

    $(MODULE): APP_A_mod_a.o
    @echo "  Making $@ ..."
    @$(CC) $? -o$@ -L$(LIB) -lLIB_1

    APP_A_mod_a_t: APP_A_mod_a_t.o
    @echo "  Making $@ ..."
    @$(CC) $? -o$@ -L$(LIB) -lLIB_1

    .c.o: *.h $(INC)/*.h
    @echo "  Compiling $< ..."
    @$(CC) -c -I$(INC) $<

    INFO:
    @echo "  make all - samenpwh&nbs;'''make'''' except this message"
    @echo "  make clear - remove object files"
    @echo "  make clean - remove all object and target files"
    @echo ""

    clear: FORCE
    @rm -f *.o

    clean: FORCE clear
    @rm -f $(PRODUCT)

    FORCE:
    [/code:1:569e1de998]
    [b:569e1de998]使用方法:[/b:569e1de99]b>在主目錄下用'''make''''命令能夠首先建立函數庫,然后建立所有目標2.在主目錄下使用''mk&bsp;tar''''命令能夠對整個系統進行打包,生成的文件以日期和時間命名。 在下目錄中直接用'''make''''命令會首先給出用法提示,然后建立本目錄所有目標。 <>.在最下層子目錄中使用''mk&bsp;all''''命令不出現提示信息,直接建立本目錄所有目標。 <>.最層子目錄中使用''''k&bp;clear''''命令可以清除本目錄的所有.o文件。 <>.最層子目錄中使用''''k&bp;clean''''命令可以清除本目錄的所有.o文件和建立的所有目標。

    [b:569e1de998]注:[/b:569e1de998]在某些環境下,由于make中調用shell命令的機制,可能不支持遞歸。

     rootclown 回復于:2005-04-22 22:57:31
    收藏了,一直也沒靜下心學習makefile的寫法:(

     wildworf 回復于:2005-04-23 13:52:01
    我們現在的項目里,我寫的和這個也差不多哦,但沒這么全,學習學習

     brucewoo 回復于:2005-04-25 14:48:51
    真的很不錯

     溫暖的夏季 回復于:2005-04-26 16:14:40
    好貼子!!多些樓主!!!

     silverwolf 回復于:2005-04-26 16:39:16
    有句不太理解
    for DIR in&nbs;sgp&nbp'''lib'''';l'''';ls|grpbpv&nbp'''lib''''`; do
    .......
    done

    為什么不寫成:
    for DIR in `ls`; do
    ......
    done

    有什么區別?

     FH 回復于:2005-04-26 23:31:10
    [quote:3821ea2993="silverwolf"]有句不太理解
    for DIR in&nbs;sgp&nbp'''lib'''';ls|grpbpv&nbp'''lib''''`; do
    ......
    done

    為什么不寫成:
    for DIR in `ls`; do
    ......
    done

    有什么區別?[/quote:3821ea2993]
    lib需要先make

     king1981 回復于:2005-04-27 13:34:39
    無聊。。。。。。。。

     yuxh 回復于:2005-04-27 13:49:33
    [quote:e13e45f60d="king1981"]無聊。。。。。。。。[/quote:e13e45f60d]
    年青人,不懂不要亂說

     天祥星辰 回復于:2005-04-27 15:22:38
    真的很不錯 高手就是高手 敬禮  收藏

     duke_gun 回復于:2005-04-27 17:27:32
    [quote:e46df39909="king1981"]無聊。。。。。。。。[/quote:e46df39909]
    多看看就有得聊了。我當初寫Makefile時到SMTH上看了半天才轉過彎來。FH謝謝!

     landu_liu 回復于:2005-04-27 22:27:55
    這在學這個呢,謝謝樓主

     獨行俠1 回復于:2005-04-28 09:59:17
    這個比較有參考價值,已經放到自己的bolg里。在這和樓主說一聲

     dayou 回復于:2005-04-28 22:27:15
    action         = new             (clean, scan, codegen, compile, link) 
                     = update          (scan, compile, link)
                     = remake          (compile, link)
                     = label_build     (clean, retrieve, scan, compile, link)
                    = clean           (clean)
                    = get             (retrieve)
                    = codegen         (codegen)

     foxmanzj 回復于:2005-05-08 16:56:14
    建議想學make還是man make,man cc看看吧。更全面

     albcamus 回復于:2005-05-08 17:04:16
    [quote:8c00f3762e="foxmanzj"]建議想學make還是man make,man cc看看吧。更全面[/quote:8c00f3762e]

    這話過分了點兒吧?make和cc的手冊里有Makefile的寫法?

     dolink 回復于:2005-05-08 21:20:38
    [quote:67c70a570d="king1981"]無聊。。。。。。。。[/quote:67c70a570d]

    高手的話 沉默就是最高尚的
    不要出語刺激人啊
    很煞人意志的

     BetonArmEE 回復于:2005-05-14 18:43:05
    補充:

    應用系統里推薦再加上~/tbin ~/tmp目錄
    tbin放的是專為系統寫的工具程序,比如 備份日志 的腳本
    tmp目錄我就不說了

    個人不同意見:

    頭文件存放目錄名改成~/include
    源代碼文件存放目錄結構
    ~/src/
    ~/src/AppA/ 應用程序A源代碼文件目錄
    ~/src/AppB/ 應用程序B源代碼文件目錄
    ~/libsrc/ 本系統專用庫源代碼文件目錄
    ~/toolsrc/ 本系統工具源代碼文件目錄

    如果有另外通用函數庫(ū熱鏳own了個open函數庫為自己所用),建議另開一系統目錄

    我單位都這樣管理系統目錄的,偷偷的來與大家分享,呵呵 ^_^

     mq110 回復于:2005-07-14 11:54:01
    不錯 收藏了.~
    最開始的時候不會寫makefile.現在會寫了 感覺這些東西很有價值了.

     prc 回復于:2005-07-14 17:56:47
    收藏,贊??!

     巡道工 回復于:2005-07-15 09:43:57
    makefile 挺難的,在CSDN上看到了一個高手寫得一個教程,各位兄臺可以去看一下
    about "makefile"命令
    http://dev.csdn.net/article/20/20025.shtm
    http://dev.csdn.net/user/haoel      ------這是他的blog,是個牛的blog,是個牛

    原文轉自:http://www.kjueaiud.com

    評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>