歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> 學習Linux

一個通用的Makefile框架,通用Makefile框架

一個通用的Makefile框架,通用Makefile框架

一個通用的Makefile框架,通用Makefile框架


先做一個簡單的記錄,後續有時間再慢慢完善補充細節。

先上一個整體圖片:

 

 

其中,最重要的文件就是:program_template.mk。

下面是program_template.mk最重要的內容:

$(1)_COBJS = $$(patsubst $$($(1)_SDIR)%.c,$$($(1)_BIN)/%.o,$$($(1)_CSRCS))
$(1)_OBJS = $$($(1)_COBJS)

$(1)_COBJDEPS = $$(patsubst $$($(1)_SDIR)%.c, $$($(1)_BIN)/%.d,$$($(1)_CSRCS))
$(1)_OBJDEPS = $$($(1)_COBJDEPS

$$($(1)_COBJS): $$($(1)_BIN)/%.o: $$($(1)_SDIR)%.c
    $$(CC) $$($(1)_CFLAGS) $$($(1)_CXXFLAGS) -c $$< -o $$@

$$($(1)_COBJDEPS): $$($(1)_BIN)/%.d: $$($(1)_SDIR)%.c
    [ -d $$(@D) ] || mkdir -p $$(@D) &&  \
    $$(CC) -M -MP $$($(1)_CFLAGS) $$($(1)_CXXFLAGS) $$< | \
    sed 's|\($$(notdir $$*)\)\.o[ :]*|$$(dir $$@)\1.o $$@ : |g' > $$@


$(1): $$($(1)_EXEC) ;

$$($(1)_EXEC): $$($(1)_OBJS) $$($(1)_LIBDEPS)
    $$(CC) -o $$@ $$($(1)_OBJS) $$($(1)_LDFLAGS)
    echo $$@ : $$^ > $$@_EXEC.dep

  

最重要的內容已列出,後續有時間再慢慢完善一些細節,有對Makefile有興趣的朋友可以探討交流。

 

http://xxxxxx/Linuxjc/1188807.html TechArticle

Copyright © Linux教程網 All Rights Reserved