Makefile学习
2014-12-03 13:44
162 查看
http://blog.chinaunix.net/uid-26404201-id-3334234.html1.:=和=的区别 http://blog.chinaunix.net/uid-26404201-id-3334234.html 先看下面的Makefile: #example B:=$(A) A=later all: @echo$(B) 执行make命令,我们发现什么都没输出,我们将第3行的:=换成=。 #example B=$(A) A=later all: @echo$(B) 执行make,输出later。 分析:B:=$(A)时,它只会到这句语句之前去找A的值,因A没有定义所以什么都没有输出。 B=$(A)时,虽然该语句之前A没有定义,但是在其后定义了,所以能输出later。2.Makfe工具 xdcmake http://alphamailpost.blog.163.com/blog/static/20111808120127261018264/ http://blog.csdn.net/lvwx369/article/details/76952453.$(MAKE)使用http://blog.csdn.net/ghostyu/article/details/77551771、目标名称,摆脱手动设置目标名称[cpp] viewplaincopyTARGET = $(notdir $(CURDIR)) all:$(TARGET) CMD.... $(CURDIR)表示Makfile当前目录全路径$(notdir$(path))表示把path目录去掉路径名,只留当前目录名这样就可以得到Makefile当前目录名称,用目录名作为目标程序名是一个不错的选择2、使用include,把所有Makefile共享的设置包含进来[cpp] viewplaincopyBASE_DIR = /root/DM36x include $(BASE_DIR)/Rules.make XDC_PATH = $(DMAI_INSTALL_DIR)/packages [cpp] viewplaincopyDMAI_INSTALL_DIR在Rules.make中已经设置过,这样,需要使用DMAI_INSTALL_DIR变量的时候只要include 这个Rules.make接可以了 3、遍历遍历所有特定的源文件[cpp] viewplaincopySOURCES = $(wildcard *.c) HEADERS = $(wildcard *.h) 如果当前目录先有main.c func.c func.h 这样SOURCES变量就等于main.c func.cHEADERS变量就等于func.h这样就每次添加源文件后就不需要重新修改makefile了4、替换文件名称[cpp] viewplaincopyOBJFILES = $(SOURCES:%.c=%.o) 如果SOURCES等与3中的main.c和func.c这样OBJFILES就等于main.ofunc.o 同样摆脱了手动修改编译的中间文件名5、交叉编译设置[cpp] viewplaincopyVERBOSE = @ COMPILE.c = $(VERBOSE) $(MVTOOL_PREFIX)gcc $(C_FLAGS) $(CPP_FLAGS) -c LINK.c = $(VERBOSE) $(MVTOOL_PREFIX)gcc $(LD_FLAGS) 6、编译[cpp] viewplaincopy$(OBJFILES): %.o: %.c $(HEADERS) @echo Compiling $@ from $<.. $(COMPILE.c) -o $@ $< 7、[cpp] viewplaincopyinstall: $(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的话
SUBDIRS=foobarbaz
subdirs: fordirin$(SUBDIRS);do\ $(MAKE)-C$$dir;\ done这个实例执行foobarbaz目录下的makefile4.忽略makefile中编译错误 在执行makefile中常常会出错,出错会导致makefile退出,但有些错误时无关紧要的,可以忽略,怎么处理呢? 可以在执行命令前加入符号‘-’ 如:-rm123.txt 正常情况下,如果不存在123.txt文件,执行时会出错, 加了‘-’会忽略这个错误,makefile会继续往下执行;二.常见Makefile写法
相关文章推荐
- 学习make工具的用法及makefile的写法
- makefile学习[转载]
- Makefile学习教程: 跟我一起写 Makefile
- 入门篇-学习点滴之Makefile基础
- makefile学习笔记(三)
- Makefile学习教程: 跟我一起写 Makefile
- 深入学习Make命令和Makefile(上)
- makefile 学习
- Makefile学习教程: 跟我一起写 Makefile
- OCI学习之 Makefile
- Makefile的使用学习(一)
- makefile学习(一)
- Makefile学习教程: 跟我一起写 Makefile
- Makefile学习(二)
- Makefile基础 -- Unix学习总结之二
- 开始学习makefile
- makefile学习总结(修正版)
- 深入学习Make命令和Makefile(下)
- makefile学习笔记(二)
- Makefile学习教程