通用多目录makefile的写法
我的项目文件层次是:项目名称/include、output、src
src/admin、stu、tch、common
最外层的Makefile:
DEBUG = y
MYDEBUG = DEBUG
ifeq ($(DEBUG),y)
DEBFLAGS = -O -g -D$(MYDEBUG)
else
DEBFLAGS =
endif
PRJ_HOME := $(shell pwd)
SOURCES := $(wildcard *.c)
OBJECTS := ${SOURCES:%.c=%.o}
INCPATH := -I$(PRJ_HOME)/include -I./
export CFLAGS += $(INCPATH) $(DEBFLAGS)
export CC = gcc
export OUTPUTDIR = $(PRJ_HOME)/output
PROGRAM = system_stu
VPATH = ${OUTPUTDIR}
.PHONY : all
all : ${PROGRAM}
${PROGRAM} : ${OBJECTS} oadmin ocommon ostu otch
$(CC) -o $@ ${OUTPUTDIR}/*.o $(CFLAGS)
%.o:%.c
$(CC) -o ${OUTPUTDIR}/$@ -c $< $(CFLAGS)
oadmin :
@$(MAKE) -C src/admin/
ocommon :
@$(MAKE) -C src/common/
ostu :
@$(MAKE) -C src/stu/
otch :
@$(MAKE) -C src/tch/
.PHONY : clean
clean :
$(RM) ${OUTPUTDIR}/*.o *.o ${PROGRAM}
子目录的Makefile:
SOURCES := $(wildcard *.c)
OBJECTS := ${SOURCES:%.c=%.o}
VPATH = $(OUTPUTDIR)
all : ${OBJECTS}
%.o:%.c
$(CC) -o ${OUTPUTDIR}/$@ -c $< $(CFLAGS)
clean :
通用多目录makefile的写法的更多相关文章
- [Makefile]多目录Makefile写法
最近需要写一个测试程序,这个测试程序需要集成一些功能,写在同一个文件看上去很不好,多个文件的Makefile又不是很熟,于是分享下面这篇文章 先介绍下,调试Makefile时,想知道某个变量的值,怎么 ...
- 多个文件目录下Makefile的写法
1.前言 目前从事于linux下程序开发,涉及到多个文件,多个目录,这时候编译文件的任务量比较大,需要写Makefile.关于Makefile的详细内容可以参考网上流传非常广泛的<跟我一起写Ma ...
- [转] 多个文件目录下Makefile的写法
1.前言 目前从事于linux下程序开发,涉及到多个文件,多个目录,这时候编译文件的任务量比较大,需要写Makefile.关于Makefile的详细内容可以参考网上流传非常广泛的<跟我一起写Ma ...
- 操作系统(5)实验0——makefile的写法
之前GCC那部分我提到过,gcc啥啥啥啥傻傻的那个指令只能够编译简单的代码,如果要干大事(例如突然心血来潮写个c开头的神经网络库之类的),还是要写Makefile来编译.其实在Windows下通常用I ...
- 通用c程序Makefile
#一个通用的Makefile,可以在linux各大平台下通用编译c程序,这个版本在gcc平台下实现,如需要课更改第二部的gcc,也可以在第三部添加所需要的库,如有错误,欢迎即使纠正 #1.遵循可移植操 ...
- 转:简单通用的一则makefile .
在linux下面下写程序少不了写makefile,如果每个文件都按部就班的详细的写编译脚本,效率势必低下:makefile提供了自动化变量.模式规则等,稍加利用可以提高写makefile的效率.下面列 ...
- 单源文件目录makefile
目录结构 由于只是用来编译简单的小型程序,所以目录尽量简洁: . ├── build │ ├── bin │ ├── .dep │ └── obj ├── makefile └── src ...
- gtk编译之makefile的写法(之一)
在学习c语言GUI编程时想必大家都会遇见这样一个问题买就是每次编译都要敲`pkg-config --cflags --libs gtk+-2.0`这个烦恼吧 这是我们可以编写一个makefile文件这 ...
- 简单makefile的写法
一个项目下的文件比较多,如果单个的输入,比较费劲,所以就需要把编译过程写进一个MakeFile文件中. 下面建立5个文件,3个cxx文件,2个hxx头文件 //filename main.cxx #i ...
随机推荐
- android Service简介及启动关闭方式
(1)Service是Android系统中的四大组件之一,和Activity是同一层次的组件:它是一种生命周期较长,没有可视化界面,运行于后台的一种服务:例如,我们听音乐可以使用Service,下载东 ...
- [HEOI 2013 day2] 钙铁锌硒维生素 (线性代数,二分图匹配)
题目大意 给定两个n阶方阵,方阵B的行i能匹配方阵A的行j当且仅当在第一个方阵中用行向量i替换行向量j后,第一个方阵满秩,显然这是个二分图匹配问题,问是否存在完美匹配,如果存在,还要输出字典序最小的方 ...
- Decorator学习笔记
初学者,自己的理解,请各位前辈不吝指正! Decorator,装饰模式,设计模式之一,谈谈我的理解,装饰这个词在我概念中就是给某个事物加上一些美丽的外表,把它变得更加完美.但是装饰是可以随时改变的,可 ...
- day52
今天依旧 阅读2篇的整理 数学试卷一套 综合练习计算 政治视频一个 范帅长难句一个 翻译两句 作文大小各一个 linux基础 今天折腾最久的应该是linux了 自己重新手动安装了一下 遇到的不少问题在 ...
- USB枚举详细过程剖析(转)
USB枚举详细过程剖析(转) 原文地址:http://blog.163.com/luge_arm/blog/static/6774972620071018117290/ 从驱动开发网看到一篇<U ...
- 常用文件的文件头(附JAVA测试类)
1. MIDI (mid),文件头:4D546864 2. JPEG (jpg),文件头:FFD8FF 3. PNG (png),文件头:89504E47 4. GIF (gif),文件头:47494 ...
- C++11 多线程 基础
C++11开始支持多线程编程,之前多线程编程都需要系统的支持,在不同的系统下创建线程需要不同的API如pthread_create(),Createthread(),beginthread()等,使用 ...
- SQL函数简述
数字函数ABS 取绝对值 POWER 乘方 LN 10为底数取幂SQRT 平方根 EXP e的n次乘方 LOG(m,n) m为底数n取幂数学运算函数:ACOS ATAN ATAN2 COS COSH ...
- Mysql配置调优(转自阿铭论坛)
Mysql配置文件my.cnf参数优化对于新手来讲,是比较难懂的东西,其实这个参数优化,是个很复杂的东西,对于不同的网站,及其在线量,访问量,帖子数量,网络情况,以及机器硬件配置都有关系,优化不可能一 ...
- WebApi2官网学习记录---Tracing
安装追踪用的包 Install-Package Microsoft.AspNet.WebApi.Tracing Update-Package Microsoft.AspNet.WebApi.WebHo ...