常见makefile写法
原文地址:blog.csdn.net/ghostyu/article/details/7755177
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的话
常见makefile写法的更多相关文章
- theos的makefile写法
theos的makefile写法与其他linux/unix环境下的makefile写法大同小异,但是对于makefile不熟悉的在导入一些dylib或者framework的时候就会变得很蛋疼. 对于f ...
- js函数常见的写法以及调用方法
写在前面:本文详细的介绍了5中js函数常见的写法以及调用的方法,平时看别人代码的时候总是看到各种不同风格的js函数的写法.不明不白的,找了点资料,做了个总结,需要的小伙伴可以看看,做个参考.1.常规写 ...
- Makefile之写demo时的通用Makefile写法
Makefile之写demo时的通用Makefile写法[日期:2013-05-22] 来源:CSDN 作者:gqb666 [字体:大 中 小] 前面的一篇文章Makefile之大型工程项目子目录M ...
- 大型工程多个目录下的Makefile写法
1.前言 目前从事于linux下程序开发,涉及到多个文件,多个目录,这时候编译文件的任务量比较大,需要写Makefile.关于Makefile的详细内容可以参考网上流传非常广泛的<跟我一起写Ma ...
- 常见的makefile写法【转】
转自:http://blog.csdn.net/ghostyu/article/details/7755177 版权声明:本文为博主原创文章,未经博主允许不得转载. .目标名称,摆脱手动设置目标名称 ...
- 【APUE】Chapter16 Network IPC: Sockets & makefile写法学习
16.1 Introduction Chapter15讲的是同一个machine之间不同进程的通信,这一章内容是不同machine之间通过network通信,切入点是socket. 16.2 Sock ...
- linux下通用Makefile写法
linux编译多个源文件的程序比较麻烦,这下就需要通用的Makefile了,编译的时候执行一下make命令就OK,下面介绍通用makfile的写法. 假设现在有以下源文件:file1.h file1. ...
- gcc编译, gdb调试, makefile写法
//test.c: #include <stdio.h> int main(void) { printf("hello world!"); return 0; } == ...
- 转来的 cuda makefile 写法学习
原文作者:FreeAquar 原文出处:http://www.cnblogs.com/FreeAquar/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给 ...
随机推荐
- 盛希泰:办公室就像男人的春药——人的一生的精力是有限的,你把有限的时间分配给谁决定你的成败——你有N多选择,你人生的积累就是N多选择加起来的结果
欢迎关注“创事记”的微信订阅号:sinachuangshiji 创事记注:12月22日晚上,盛希泰在清华大学旧经管报告厅面对清华师生讲了一堂<创业引导课>.本文由洪泰帮根据课堂录音整理完成 ...
- java 值传递和引用传递。
java中 基本类型的参数传递是值传递,即前后两个方法的变量不相干,被调方法参数值改变不影响调用方法的传参数值. 引用数据类型的参数传递是 传递的是参数的地址.即被调方法修改参数值会,调用方法里会跟着 ...
- 【剑指Offer学习】【面试题36:数组中的逆序对】
题目:在数组中的两个数字假设前面一个数字大于后面的数字.则这两个数字组成一个逆序对.输入一个数组.求出这个数组中的逆序对的总数. 举例分析 比如在数组{7, 5, 6, 4 中, 一共存在5 个逆序对 ...
- COBOL学习
COBOL概述 什么是COBOL语言: COBOL是Common Business Oriented Language的缩写,是面向商业通用编程语言.它是专门为商业数据处理而设计 ...
- aliyun硬盘挂载
实在难以忍受公司服务器的网络问题,停用了半年的aliyun服务器今天终于决定启用了. 购买的时候是40G的硬盘空间,首先查了一硬盘情况结果发现有一个分区居然没有挂载. 第一步是创建一个分区 输入命令 ...
- js设置奇偶行数样式
$(document).ready(function () { odd = { "background": "none" }; //奇数样式 even = { ...
- C#语言基础之转义字符、变量、常量、类型转换
1.转义字符: Tab键:/t 反斜杠:// 单引号:/’ 双引号:/” 回车:/r 换行:/n 警告:/a 退格:/b 换页:/f 空:/0 2.变量 ...
- ppt类似工具AxeFile使用心得
一个所谓的傻瓜式过渡效果自动生成工具.定义好展示窗口大小,加入时序.所谓的闪烁效果,也是相当的滑稽. 是一个非专业的简单的快速PPT工具. 但是体现的确是扁平化的设计思路,很值得深思. ------ ...
- jz2440: linux/arch/arm/下面的plat-和mach-
jz2440: linux/arch/arm/下面的plat和mach plat-s3c24xxmach-s3c2440mach-s3c2410 ====================== 1. 三 ...
- Qualified name lookup
Qualified name lookup Qualified name lookup Enumerations Class members Namespace members Unqualified ...