Makefile

liujunyu 2008-06-03 03:37:32

怎样写Makefile的问题:

有一main.c文件,其中它中有一句话: #include "dirctory\a.h"
与其同目录的有一子文件夹dirctory,
子文件夹dirctory下面有三各文件a.h a1.c a2.c.
a1.c 和a2.c在编译时需要用到a.h

请问怎样写Makefile
Thanks
...全文
86 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
linuxguy 2008-06-04
  • 打赏
  • 举报
回复
%o:%c
$(CC) $(CFLAG) $ < -o $@

CC是编译器
CFLAG是编译参数

$<是变量, 代表dependent文件,也就是相应的C文件
$@也是变量, 代表Target文件名称,也就是相应.O文件!

这句话说白了,就会保证把C文件编译成OBJ文件!
liujunyu 2008-06-04
  • 打赏
  • 举报
回复
请问一楼的下面这句话是什么含义?

%o:%c
$(CC) $(CFLAG) $ < -o $@

谢谢。
liujunyu 2008-06-04
  • 打赏
  • 举报
回复
谢谢,
各位大侠。
iec23801 2008-06-03
  • 打赏
  • 举报
回复
嗯...1楼的比较通用.
也可以用automake,autoconf,m4...等一些工具自动生成makefiles文件.
lck_1 2008-06-03
  • 打赏
  • 举报
回复
main:a1.o a2.o main.o
gcc -o main.exe a.o main.o
a1.o:a.h a1.c
gcc -c a1.c -o a1.o
a2.o:a.h a2.c
gcc -c a2.c -o a2.o
main.o:a.h main.c
gcc -c main.c -o main.o
clean:
rm *.o -rf


我写的这个非常不通用,但是很好理解,把他保存为makefile,直接去make main就可以了。
sadgod 2008-06-03
  • 打赏
  • 举报
回复
CC=gcc
CFLAG=-c -g
LFLAG=-g
OBJ=main.o directory\a1.o directory\a2.o

main:$(OBJ)
$(CC) $(LFLAG) $(OBJ) -o main
%o:%c
$(CC) $(CFLAG) $< -o $@

.PHONY:clean
clean:
-rm *.o main -f

23,223

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧