社区
Linux/Unix社区
帖子详情
makefile,帮忙,有点难!
jolyalansunrain
2005-11-10 04:52:04
我在工程目录下有如下组织的文件:
src/file1.c file2.c file3.c
inc/file1.h file2.h file3.h
x.c
x.h
makefile
.
.
.
请问如何写这个makefile,当src或inc中任意一个文件修改,或x.c、x.h其中之一改变后,都要重新编译x.c得到x.o,怎么办?
...全文
313
11
打赏
收藏
makefile,帮忙,有点难!
我在工程目录下有如下组织的文件: src/file1.c file2.c file3.c inc/file1.h file2.h file3.h x.c x.h makefile . . . 请问如何写这个makefile,当src或inc中任意一个文件修改,或x.c、x.h其中之一改变后,都要重新编译x.c得到x.o,怎么办?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jolyalansunrain
2005-11-14
打赏
举报
回复
我也想用通配符来做,但不知怎么写,请赐教。
jolyalansunrain
2005-11-14
打赏
举报
回复
哦,谢谢。高手,在哪里?
deutsch
2005-11-12
打赏
举报
回复
推荐一本书
Managing Projects with GNU Make, Third Edition
by Robert Mecklenburg
Copyright . 2005, 1991, 1986 O’Reilly Media, Inc. All rights reserved.
在o'reilly的opensource有免费下载的全书。写makefile必备
chuanzhu
2005-11-11
打赏
举报
回复
可能用通配符*来解决。具体问高手吧!
analyser2003
2005-11-11
打赏
举报
回复
9494
yindesheng
2005-11-11
打赏
举报
回复
或x.c、x.h其中之一改变后,都要重新编译x.c得到新的x.o
===============================
x.o:x.c x.h
gcc -c x.c -o x.o
tengulre
2005-11-11
打赏
举报
回复
up
------------------------------------------------
可以接收传真、短信、语音、电子邮件的邮件系统.
欢迎去免费注册帐号。
http://www.megamail.com.cn
西部Linux联盟
http://www.westlinux.org
jolyalansunrain
2005-11-11
打赏
举报
回复
这样吧,我可能说得不太清楚:
我在工程目录下有如下组织的文件:
src/file1.c file2.c file3.c.....filex.c
inc/file1.h file2.h file3.h.....filex.h
1.c......x.c
1.h......x.h
.
.
.
makefile
请问如何写这个makefile,当src或inc中任意一个文件修改,或x.c、x.h其中之一改变后,都要重新编译x.c得到新的x.o,怎么办?像jwzhouVC() ( ) 那样当src、inc中某个文件修改了,make只会去重编file1.o file2.o file3.o.....filex.o,不会去编x.o,x.o不是最新的,连接不会通过的。怎么办?bekars(涡轮增压) 的我不是很懂呀。
jwzhouVC
2005-11-10
打赏
举报
回复
all:x
x:x.o file1.o file2.o file3.o
gcc -o x x.o file1.o file2.o file3.o
x.o:x.c
gcc -c -I. x.c
file1.o:./src/file1.c
gcc -c -I. -I./inc ./src/file1.c
file2.o:src/file2.c
gcc -c -I. -I./inc ./src/file2.c
file3.o:./src/file3.c
gcc -c -I. -I./inc ./src/file3.c
clean:
rm -rf *.o
rm -rf ./src/*.o
rm -rf x
bekars
2005-11-10
打赏
举报
回复
x.o依赖所有需要的文件,这些文件变动,make都会编译变化的文件的。
看一个Makefile的实现:
CC = gcc
INCLUDES = -I.
CFLAGS = -g -O2 $(INCLUDES) \
-Wall -Wunused -Wstrict-prototypes
DEFS =
COMPILE = $(CC) $(CFLAGS) $(DEFS)
OBJS = memory.o utils.o notify.o timer.o scheduler.o \
vector.o list.o html.o parser.o watchdog.o
HEADERS = $(OBJS:.o=.h)
.c.o:
$(COMPILE) -c $<
all: $(OBJS)
clean:
rm -f *.a *.o *~
distclean: clean
rm -f Makefile
memory.o: memory.c memory.h
utils.o: utils.c utils.h
notify.o: notify.c notify.h
timer.o: timer.c timer.h
scheduler.o: scheduler.c scheduler.h memory.h utils.h
vector.o: vector.c vector.h memory.h
list.o: list.c list.h memory.h
html.o: html.c html.h memory.h
parser.o: parser.c parser.h memory.h
watchdog.o: watchdog.c watchdog.h scheduler.h memory.h parser.h
kiron
2005-11-10
打赏
举报
回复
x.o: x.c x.h
[TAB]gcc -c x.c -I.
什么是
makefile
1什么是
Makefile
在之前学习C程序的编译过程中,我们知道编译一个程序还比较简单, 如果要编译多个文件,或者不同文件夹中的文件,需要生成不同的库文件,以及确定这些文件的编译先后顺序,往往所需要的命令行特别多,而且比较复杂,甚至对于以后项目的维护也比较麻烦。 再想想如果我们需要编译Linux内核这样好几W个文件的项目
难
道需要我们一个命令的输入吗 ? 那估计是一场噩梦。 那么这个时候如果我们能够把所有的编译规则全部规范到文件中,然后通过解析该文件去执行对应的编译...
Makefile
命令参数、调用其他
Makefile
、嵌套
介绍make运行参数和调用其他
makefile
MAKEFILE
从易到
难
因为dpdk自带的make 都比较简洁。在dpdk v20之前,
makefile
中会有 include xx.mk的这种用法,这个是把dpdk自己的一些环境变量, 比如目录, 编译器这些提前设置好。在使用dpdp的时候,也是从那个时候开始接触到了wildcard, subdir, filter , %.o , VPATH, .PHYON, source_y, 等变量和用法。
【
makefile
入门】
makefile
选项和
makefile
.buil
学习
makefile
的常用选项,并通过一个案例来学习
makefile
.build
Makefile
完全指南:从入门到工程化,自动化构建不再
难
在 Linux C/C++ 开发中,当项目源文件增多时,手动输入gcc命令编译会变得繁琐且容易出错 —— 不仅要记住文件依赖关系,还要处理编译顺序和参数。`
Makefile
` 的核心价值就是 “自动化构建”:一旦写好配置,只需执行make命令,就能自动完成编译、链接、清理等一系列操作,极大提升开发效率。本文从
Makefile
的基本原理入手,逐步拆解语法规则、依赖关系、伪目标、变量与函数,最后通过工程化示例演示实战用法,帮你从 “手动编译” 升级到 “自动化构建”,轻松应对中小型项目开发。
Linux/Unix社区
23,224
社区成员
74,536
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章