原文地址:blog.csdn.net/ghostyu/article/details/7755177

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

[cpp] view plaincopy
  1. TARGET = $(notdir $(CURDIR))
  2. all:$(TARGET)
  3. CMD....

$(CURDIR) 表示Makfile当前目录全路径

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

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

[cpp] view plaincopy
  1. BASE_DIR = /root/DM36x
  2. include $(BASE_DIR)/Rules.make
  3. XDC_PATH = $(DMAI_INSTALL_DIR)/packages
[cpp] view plaincopy
  1. DMAI_INSTALL_DIR在Rules.make中已经设置过,这样,需要使用DMAI_INSTALL_DIR变量的时候只要include 这个Rules.make接可以了

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

[cpp] view plaincopy
  1. SOURCES = $(wildcard *.c)
  2. HEADERS = $(wildcard *.h)

如果当前目录先有 main.c  func.c  func.h

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

HEADERS变量就等于func.h

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

4、替换文件名称

[cpp] view plaincopy
  1. OBJFILES = $(SOURCES:%.c=%.o)

如果SOURCES等与3中的main.c和func.c

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

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

5、交叉编译设置

[cpp] view plaincopy
  1. VERBOSE = @
  2. COMPILE.c = $(VERBOSE) $(MVTOOL_PREFIX)gcc $(C_FLAGS) $(CPP_FLAGS) -c
  3. LINK.c = $(VERBOSE) $(MVTOOL_PREFIX)gcc $(LD_FLAGS)

6、编译

[cpp] view plaincopy
  1. $(OBJFILES):    %.o: %.c $(HEADERS)
  2. @echo Compiling $@ from $<..
  3. $(COMPILE.c)  -o $@ $<

7、

[cpp] view plaincopy
  1. install:    $(if $(wildcard $(TARGET)), install_$(TARGET))
  2. install_$(TARGET):
  3. @install -d $(EXEC_DIR)
  4. @install $(TARGET) $(EXEC_DIR)
  5. @install $(TARGET).txt $(EXEC_DIR)
  6. @echo
  7. @echo Installed $(TARGET) binaries to $(EXEC_DIR)..

先判断当前目录是否有$(TARGET),如果有,就执行伪目标install_$(TARGET),这个展开了就相当于install_app,如果$(TARGET)等于app的话

常见makefile写法相关推荐

  1. (原創) 标准的makefile写法 (C/C++)

    一个很典型的Linux C/C++的makefile写法,其它的应用可根据此template修改. (注意每一行的前面若有空格,是tab,不是space)  1#Source file  2  3SR ...

  2. .php中js写法,js函数常见的写法以及调用方法

    写在前面:本文详细的介绍了5中js函数常见的写法以及调用的方法,平时看别人代码的时候总是看到各种不同风格的js函数的写法.不明不白的,找了点资料,做了个总结,需要的小伙伴可以看看,做个参考. 1.常规 ...

  3. theos的makefile写法

    theos的makefile写法与其他linux/unix环境下的makefile写法大同小异,但是对于makefile不熟悉的在导入一些dylib或者framework的时候就会变得很蛋疼. 对于f ...

  4. pbe近似_计算化学中的一些常见不良写法和用词

    计算化学中的一些常见不良写法和用词 文/Sobereva @北京科音 First release:2015-Jun-28   Last update:2018-Apr-25 经常在看一些文章.帖子,以 ...

  5. Makefile写法入门心得

    Makefile的写法入门心得 Makefile的出现使得编译过程极大地自动化了,省去了很多人工工作,非常方便.这里,小结一下写Makefile的一点小心得.嗯,对了,差点忘了一件事,同一个Makef ...

  6. linux下通用Makefile写法

    linux编译多个源文件的程序比较麻烦,这下就需要通用的Makefile了,编译的时候执行一下make命令就OK,下面介绍通用makfile的写法. 假设现在有以下源文件:file1.h file1. ...

  7. 【转】makefile写法2

    转自: 目的:      基本掌握了make的用法,能在Linux系统上编程. 环境:      Linux系统,或者有一台Linux服务器,通过终端连接.一句话:有Linux编译环境. 准备:    ...

  8. Makefile写法

    概述 -- 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makef ...

  9. 我的makefile写法(一)

    程序演示了一个通过tcp/ip通讯的server/client程序,都是简单的C程序.源码: server.c #include <stdio.h> #include <sys/ty ...

  10. 一个通用的makefile写法,自动推导文件的依赖关系

    温习之用. 假设有两个头文件目录 header1,header2;两个cpp文件目录,src1,src2,一个lib目录 写一个完整的makefile步骤如下: 1 定义可执行文件的名称 TARGET ...

最新文章

  1. VS2010打不开创建的项目的解决方法
  2. 在Ubuntu 16.04 LTS下编译安装OpenCV 4.1.1
  3. 基于Web Services建立Asp与Asp.Net之间Session数据桥的应用研究
  4. 50+企业数字化转型、管理的方法论,这本书到底有什么干货?
  5. HDU-1285-确定比赛名次
  6. ES6之let与const
  7. JavaWeb:Redis
  8. 智能优化算法(源码)-飞蛾扑火优化算法(MFO)
  9. 一、cadence ic 5141 ——软件下载地址以及常见错误
  10. win10专业版激活方法
  11. 苹果手机!!!fiddler自动抓抓包iphone上的http(或https)请求,手机设置完http代理,但是手机不能上网了。即(fiddler iphone http代理 不能上网)
  12. 科普知识:深网和暗网
  13. 小程序上传图片报错MiniProgramError “createUploadTask:fail url not in domain list“ 解决方案
  14. 【cocos creater】5.仿《弓箭传说》- 创建虚拟遥感
  15. 云南大学计算机学院导师信息,云南大学软件学院研究生导师介绍:姚绍文(教授,博士生导师)...
  16. 破解excel vba程序
  17. java libusb_libusb中断传输
  18. 【RTX操作系统教程】第6章 RTX操作系统源码方式移植
  19. vue element-ui 中走马灯自适应图片高度
  20. 增长复盘|我们在小程序实现裂变!日拉新1000+

热门文章

  1. linq判断集合中相同元素个数_高中数学:集合与函数概念知识点汇总
  2. 打包的时候不把配置文件加进去_苹果软件打包签名原理
  3. 示例1---从记事本中读取数值,然后写到数组中---切片,优化版本
  4. django mysql debug_django mysql db 日志无输出
  5. java 位与 取模_【Java基础】14、位与()操作与快速取模
  6. matlab 图片最多显示几张_matlab 如何一次显示多个图像,subplot不合适
  7. note同步不及时 one_续航800仅卖23万,比亚迪唐DM为啥却卖不过理想ONE?
  8. 左移寄存器vhdl_用VHDL实现的通用循环移位寄存器
  9. 菲律宾马尼拉华人区一大厦发生火灾 致1人遇难
  10. 1007. 素数对猜想 (20)