转自:http://blog.csdn.net/ghostyu/article/details/7755177

  1. 版权声明:本文为博主原创文章,未经博主允许不得转载。
  2.  
  3. 、目标名称,摆脱手动设置目标名称
  4.  
  5. [cpp] view plain copy
  6.  
  7. TARGET = $(notdir $(CURDIR))
  8. all:$(TARGET)
  9. CMD....
  10.  
  11. $(CURDIR) 表示Makfile当前目录全路径
  12.  
  13. $(notdir $(path)) 表示把path目录去掉路径名,只留当前目录名
  14. 这样就可以得到Makefile当前目录名称,用目录名作为目标程序名是一个不错的选择
  15.  
  16. 、使用include,把所有Makefile共享的设置包含进来
  17.  
  18. [cpp] view plain copy
  19.  
  20. BASE_DIR = /root/DM36x
  21. include $(BASE_DIR)/Rules.make
  22.  
  23. XDC_PATH = $(DMAI_INSTALL_DIR)/packages
  24.  
  25. [cpp] view plain copy
  26.  
  27. DMAI_INSTALL_DIRRules.make中已经设置过,这样,需要使用DMAI_INSTALL_DIR变量的时候只要include 这个Rules.make接可以了
  28.  
  29. 、遍历遍历所有特定的源文件
  30.  
  31. [cpp] view plain copy
  32.  
  33. SOURCES = $(wildcard *.c)
  34. HEADERS = $(wildcard *.h)
  35.  
  36. 如果当前目录先有 main.c func.c func.h
  37.  
  38. 这样SOURCES变量就等于main.c func.c
  39.  
  40. HEADERS变量就等于func.h
  41.  
  42. 这样就每次添加源文件后 就不需要重新修改makefile
  43.  
  44. 、替换文件名称
  45.  
  46. [cpp] view plain copy
  47.  
  48. OBJFILES = $(SOURCES:%.c=%.o)
  49.  
  50. 如果SOURCES等与3中的main.cfunc.c
  51.  
  52. 这样OBJFILES就等于main.o func.o
  53.  
  54. 同样摆脱了手动修改编译的中间文件名
  55.  
  56. 、交叉编译设置
  57.  
  58. [cpp] view plain copy
  59.  
  60. VERBOSE = @
  61. COMPILE.c = $(VERBOSE) $(MVTOOL_PREFIX)gcc $(C_FLAGS) $(CPP_FLAGS) -c
  62. LINK.c = $(VERBOSE) $(MVTOOL_PREFIX)gcc $(LD_FLAGS)
  63.  
  64. 、编译
  65.  
  66. [cpp] view plain copy
  67.  
  68. $(OBJFILES): %.o: %.c $(HEADERS)
  69.  
  70. @echo Compiling $@ from $<..
  71.  
  72. $(COMPILE.c) -o $@ $<
  73.  
  74.  
  75. [cpp] view plain copy
  76.  
  77. install: $(if $(wildcard $(TARGET)), install_$(TARGET))
  78. install_$(TARGET):
  79. @install -d $(EXEC_DIR)
  80. @install $(TARGET) $(EXEC_DIR)
  81. @install $(TARGET).txt $(EXEC_DIR)
  82. @echo
  83. @echo Installed $(TARGET) binaries to $(EXEC_DIR)..
  84.  
  85. 先判断当前目录是否有$(TARGET),如果有,就执行伪目标install_$(TARGET),这个展开了就相当于install_app,如果$(TARGET)等于app的话

常见的makefile写法【转】的更多相关文章

  1. theos的makefile写法

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

  2. Makefile之写demo时的通用Makefile写法

    Makefile之写demo时的通用Makefile写法[日期:2013-05-22] 来源:CSDN  作者:gqb666 [字体:大 中 小] 前面的一篇文章Makefile之大型工程项目子目录M ...

  3. 大型工程多个目录下的Makefile写法

    1.前言 目前从事于linux下程序开发,涉及到多个文件,多个目录,这时候编译文件的任务量比较大,需要写Makefile.关于Makefile的详细内容可以参考网上流传非常广泛的<跟我一起写Ma ...

  4. 常见makefile写法

    原文地址:blog.csdn.net/ghostyu/article/details/7755177 1.目标名称,摆脱手动设置目标名称 TARGET = $(notdir $(CURDIR)) al ...

  5. 【APUE】Chapter16 Network IPC: Sockets & makefile写法学习

    16.1 Introduction Chapter15讲的是同一个machine之间不同进程的通信,这一章内容是不同machine之间通过network通信,切入点是socket. 16.2 Sock ...

  6. HTML5几种常见的错误写法

    本文介绍了HTML5常见的6种错误写法,包括:1.不要使用section作为div的替代品 2.只在需要的时候使用header和hgroup 3.不要把所有列表式的链接放在nav里 4.figure元 ...

  7. linux下通用Makefile写法

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

  8. gcc编译, gdb调试, makefile写法

    //test.c: #include <stdio.h> int main(void) { printf("hello world!"); return 0; } == ...

  9. 转来的 cuda makefile 写法学习

    原文作者:FreeAquar 原文出处:http://www.cnblogs.com/FreeAquar/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给 ...

随机推荐

  1. LeetCode - 70. Climbing Stairs(0ms)

    You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb ...

  2. 当因式分解遇见近邻:一种多层面协同过滤模型(SVD++)

    本文地址:https://www.cnblogs.com/kyxfx/articles/9392086.html actorization Meets the Neighborhood: a Mult ...

  3. 主外键多表查询demo

    https://www.cnblogs.com/DragonFire/p/6949767.html mySQL练习-主外键多表查询 MySQL练习-主外键多表查询 练习: 1.建立表关系: 请创建如下 ...

  4. 总结const

    int b; const int  *a=&b; int const * a=&b; int * const a =&b; const int *const a=&b; ...

  5. 【Linux】Linux修改openfile和max user processes?

    #当时测试虚机为centos7.4版本: # 在/etc/security/limits.conf文件末尾添加如下命令: *     soft     nproc   1314 *     hard  ...

  6. OSCache页面缓存的使用

    完成项目时,为了减少对数据库的频繁操作,引出了缓存,缓存分为以下几种: 1.一级缓存 一级缓存的存储域是session,作用于单个的dao 2.二级缓存 二级缓存的存储域是sessionFactory ...

  7. 【bzoj4129】Haruna’s Breakfast 带修改树上莫队+分块

    题目描述 给出一棵树,点有点权.支持两种操作:修改一个点的点权,查询链上mex. 输入 第一行包括两个整数n,m,代表树上的结点数(标号为1~n)和操作数.第二行包括n个整数a1...an,代表每个结 ...

  8. 【bzoj1176】[Balkan2007]Mokia/【bzoj2683】简单题 CDQ分治+树状数组

    bzoj1176 题目描述 维护一个W*W的矩阵,初始值均为S(题目描述有误,这里的S没有任何作用!).每次操作可以增加某格子的权值,或询问某子矩阵的总权值.修改操作数M<=160000,询问数 ...

  9. 雅礼集训 Day3 T3 w 解题报告

    w 题目背景 \(\frac 14\)遇到了一道水题,双完全不会做,于是去请教小\(\text{D}\).小\(\text{D}\)看了\(0.607^2\)眼就切掉了这题,嘲讽了\(\frac 14 ...

  10. [学习笔记]可持久化数据结构——数组、并查集、平衡树、Trie树

    可持久化:支持查询历史版本和在历史版本上修改 可持久化数组 主席树做即可. [模板]可持久化数组(可持久化线段树/平衡树) 可持久化并查集 可持久化并查集 主席树做即可. 要按秩合并.(路径压缩每次建 ...