常见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/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给 ...
随机推荐
- installscript类型 完成时实现推荐安装其他产品的功能
目前好多软件在安装完成时都有什么 立刻运行.打开网址.推荐安装其他工具等功能 我司领导也追时髦要求了这个功能而且要推荐多个,所以这个功能实现起来就需要自己去写代码了.陆陆续续研究了研究了好长时间,由于 ...
- js中new构造函数的研究
<javascript高级编程>里对new操作符的解释: new操作符会让构造函数产生如下变化: 1. 创建一个新对象: 2. 将构造函数的作用域赋给新对象(因此t ...
- javascript技术难点之this、new、apply和call详解
讲解this指针的原理是个很复杂的问题,如果我们从javascript里this的实现机制来说明this,很多朋友可能会越来越糊涂,因此本篇打算换一个思路从应用的角度来讲解this指针,从这个角度理解 ...
- MD5校验及其c实现
那么MD5校验是什么? 一般软件或者说文件都有自己的固定文件格式或者架构信息,说简单一点就是.”世界上没有完全相同的2片叶子” ,因为MD5是一种不可逆的加密算法. 那么对于某些网上公开下载的软件,视 ...
- UNIX/Linux进程间通信IPC---管道--全总结(实例入门)
管道 一般,进程之间交换信息的方法只能是经由fork或exec传送打开文件,或者通过文件系统.而进程间相互通信还有其他技术——IPC(InterProcessCommunication) (因为不同的 ...
- MongoDB学习笔记1(简介)
一.简介 1.丰富的数据类型 MongoDB是一种非关系型数据库,是面向文档的数据库. MongoDB没有模式,文档的键不会事先定义,也 ...
- PHP函数积累
1.mt_rand(min,max):随机返回min,max之间的随整数机数. 2.date('Y-m-d H:m:s',时间戳),将时间戳格式化为相应的时间格式.time()取得时间戳 3.arra ...
- SQL分页存储过程(不支持多表联合查询,不支持多字段排序)
CREATE PROCEDURE [dbo].[Pro_GetPageOfRecords] @PageSize INT=20, --分页大小 @CurrentPage INT, --第几页 @Clum ...
- SkipFish
https://zmap.io/ http://code.google.com/p/skipfish/wiki/SkipfishDoc#How_to_run_the_scanner?
- Protel对话窗字体显示不完全问题解决办法(PCB)
点击protel99左上角的大箭头,点击preferences ,在对话框中把use client system fonts for all dialogs 复选框去掉,就可以了.