多文件夹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))

转载于:https://www.cnblogs.com/elseliving/p/7528425.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值