一个带类似IDE目录树的makefile实例

3年多没有在CSDN上传资源了。如今上传一个

http://download.csdn.net/detail/lzwml/7811445

对于大型工程源代码最好分目录存放便于管理,但是编写makefile就相对麻烦点。

这里是我写的一个makefile demo,它的关键之处在编译前导入config_xxx_file_list.mk,这个文件可以看成是IDE环境的代码目录树。具体怎么修改这个目录树相信打开文件大家都能看懂。

该实例包含两个工程,LibMakefile.mk和AppMakefile.mk
LibMakefile.mk导入config_lib_file_list.mk目录树,生成一个lib/libdemo.so动态链接库
AppMakefile.mk导入config_app_file_list.mk目录树,生成一个release/download.elf文件

测试方法
1、make -f LibMakefile.mk
2、make -f AppMakefile.mk因为编译download.elf时需要libdemo.so,所以必须先生成libdemo.so
3、./release/download.elf输出
I'm f1_1
I'm f2_1 in libdemo.so/a
I'm f2_2 in libdemo.so/a
I'm logo0
I'm logo1
I'm logo2
I'm logo3
I'm logolib in lib

 

下载版本有个2BUG,

OBJS =  $(patsubst %S,o,\
  $(patsubst %.c,%.o,$(SRCS)))

改成

OBJS =  $(patsubst %.S,%.o,\
  $(patsubst %.c,%.o,$(SRCS)))

否则不能支持.S文件编译,S是大写

 

目录格式修改

_NAMEDIR_CUR_  = name_dir0
DIR_$(_NAMEDIR_CUR_)  = ./
SRCS_$(_NAMEDIR_CUR_)  = main.c
SRCS +=  $(foreach TMP, \
 $(SRCS_$(_NAMEDIR_CUR_)), \
 $(DIR_$(_NAMEDIR_CUR_))/$(TMP))

改成

_NAMEDIR_CUR_  = name_dir0
DIR_$(_NAMEDIR_CUR_)  =
SRCS_$(_NAMEDIR_CUR_)  = main.c
SRCS +=  $(foreach TMP, \
 $(SRCS_$(_NAMEDIR_CUR_)), \
 $(DIR_$(_NAMEDIR_CUR_))$(TMP))

不然arm-linux-ld 不能识别    .//main.o    连接过程会有问题,去掉    .//    就好了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值