• <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-26來源:作者:點擊數: 標簽:
    近來,經??吹接腥嗽儐杕akefile的寫法,這里根據本人經驗給出一個應用系統的完整例子,便于各位參考。 應用系統的目錄結構如下: 代碼: ~/bin 可執行程序目錄 ~/etc 配置文件目錄 ~/inc 頭文件目錄 ~/lib 函數庫文件目錄 ~/log 日志文件目錄 ~/src 源程序文
    近來,經??吹接腥嗽儐杕akefile的寫法,這里根據本人經驗給出一個應用系統的完整例子,便于各位參考。
    應用系統的目錄結構如下:
    代碼:

    ~/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

    ~/makefile文件內容如下:
    代碼:

    all:
       @MakeSubDir() \
       { \
          for DIR in `ls|grep 'lib';ls|grep -v 'lib'`; 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|grep -v '.tar'`

    ~/src/lib/LIB_1/makefile文件內容如下:
    代碼:

    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   = 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 - same with '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:

    ~/src/APP_A/mod_a/makefile文件內容如下:
    代碼:

    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 - same with '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:

    使用方法:
    1.在主目錄下使用'make'命令能夠首先建立函數庫,然后建立所有目標。
    2.在主目錄下使用'make tar'命令能夠對整個系統進行打包,生成的文件以日期和時間命名。
    3.在最下層子目錄中直接使用'make'命令會首先給出用法提示,然后建立本目錄所有目標。
    4.在最下層子目錄中使用'make all'命令不出現提示信息,直接建立本目錄所有目標。
    5.在最下層子目錄中使用'make clear'命令可以清除本目錄的所有.o文件。
    6.在最下層子目錄中使用'make clean'命令可以清除本目錄的所有.o文件和建立的所有目標。

    原文轉自: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>