zoukankan      html  css  js  c++  java
  • 多文件夹makefile

    多文件夹Make的例子:

    LibDir = ../../export
    ModuleLib =

    ModuleDir = ../../

    TestCommonDir = ../common

    IncludeDir = -I$(TestCommonDir)
                    -I$(ModuleDir)/include/base
        
    app = myapp

    CC = gcc
    ECHO = echo
    RM = rm -rf

    CFLAGS += -DINSTALL_TYPE   $(IncludeDir)

    CFLAGS += -pthread  -g  -Wextra
    CFLAGS += -fprofile-arcs -ftest-coverage
    LDFLAGS += -fprofile-arcs -ftest-coverage

    Srcs_c  =  $(wildcard *.c)  
    Srcs_c  += $(wildcard $(TestCommonDir)/*.c)
    Srcs_obj  = $(patsubst %.c, %.co, $(Srcs_c))
    Srcs_gcno  = $(patsubst %.c, %.gcno, $(Srcs_c))
    Srcs_gcda  = $(patsubst %.c, %.gcda, $(Srcs_c))

    all: $(app)

    %.co:%.c
        $(ECHO) Compiling  Src file:$(notdir $<)...
        $(CC) $(CFLAGS) -c $< -o $@

    $(app) : $(ModuleLib) $(Srcs_obj)
        $(ECHO) linking target $@
        $(CC) -lpthread -lm -lrt -lgcov  $(LDFLAGS) -o $@ -Wl,--start-group $^ $(ModuleLib) -Wl,--end-group
    $(ModuleLib) :
        $(RM) $(ModuleLib)
        cd $(ModuleDir)/make/ && ./my.sh
    clean :
        $(RM) $(Srcs_obj) $(Srcs_gcno) $(Srcs_gcda) $(app) *.log core*

    .PHONY: all clean $(ModuleLib)
    ======================================================================
    单文件夹的makefile,需要使用notdir函数来去除路径:

    Srcs_c = $(notdir $(wildcard *.c ))
    Srcs_cpp = $(notdir $(wildcard *.cpp))
    Srcs_obj = $(patsubst %.c,%.co, $(Srcs_c)) $(patsubst %.cpp,%.cppo,$(Srcs_cpp))
    Srcs_gcno = $(patsubst %.c,%.gcno, $(Srcs_c)) $(patsubst %.cpp,%.gcno,$(Srcs_cpp))
    Srcs_gcda = $(patsubst %.c,%.gcda, $(Srcs_c)) $(patsubst %.cpp,%.gcda,$(Srcs_cpp))

  • 相关阅读:
    NYOJ题目28大数阶乘
    网页小图标设置
    Sass中文乱码问题(手动编译和watch编译)
    设计模式之构建者模式(Builder):初步理解
    Struts2之类型转换器
    css设置网页文本选中样式
    由超市临时储物柜引发的一点设计随想...
    前端资源相关参考资料
    Struts2拦截器之ExceptionMappingInterceptor(异常映射拦截器)
    Struts2之OGNL
  • 原文地址:https://www.cnblogs.com/elseliving/p/7528425.html
Copyright © 2011-2022 走看看