常见的makefile写法

1、目标名称,摆脱手动设置目标名称

TARGET = $(notdir $(CURDIR))
all:$(TARGET)
	CMD....
$(CURDIR) 表示Makfile当前目录全路径

$(notdir $(path)) 表示把path目录去掉路径名,只留当前目录名
这样就可以得到Makefile当前目录名称,用目录名作为目标程序名是一个不错的选择

2、使用include,把所有Makefile共享的设置包含进来

BASE_DIR = /root/DM36x
include $(BASE_DIR)/Rules.make

XDC_PATH = $(DMAI_INSTALL_DIR)/packages
DMAI_INSTALL_DIR在Rules.make中已经设置过,这样,需要使用DMAI_INSTALL_DIR变量的时候只要include 这个Rules.make接可以了

3、遍历遍历所有特定的源文件

SOURCES = $(wildcard *.c)
HEADERS = $(wildcard *.h)
如果当前目录先有 main.c  func.c  func.h 

这样SOURCES变量就等于main.c  func.c

HEADERS变量就等于func.h

这样就每次添加源文件后 就不需要重新修改makefile了

4、替换文件名称

OBJFILES = $(SOURCES:%.c=%.o)
如果SOURCES等与3中的main.c和func.c

这样OBJFILES就等于main.o func.o 

同样摆脱了手动修改编译的中间文件名

5、交叉编译设置

VERBOSE = @
COMPILE.c = $(VERBOSE) $(MVTOOL_PREFIX)gcc $(C_FLAGS) $(CPP_FLAGS) -c
LINK.c = $(VERBOSE) $(MVTOOL_PREFIX)gcc $(LD_FLAGS)

6、编译

$(OBJFILES):	%.o: %.c $(HEADERS) 

	@echo Compiling $@ from $<..

	$(COMPILE.c)  -o $@ $<

7、

install:	$(if $(wildcard $(TARGET)), install_$(TARGET))
install_$(TARGET):
	@install -d $(EXEC_DIR)
	@install $(TARGET) $(EXEC_DIR)
	@install $(TARGET).txt $(EXEC_DIR)
	@echo
	@echo Installed $(TARGET) binaries to $(EXEC_DIR)..
先判断当前目录是否有$(TARGET),如果有,就执行伪目标install_$(TARGET),这个展开了就相当于install_app,如果$(TARGET)等于app的话




  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值