windows7下makefile例程

来源:互联网 发布:淘宝店铺怎么换客服 编辑:程序博客网 时间:2024/06/05 15:31

  最近因为工作关系需要接触makefile,感觉在dos窗口下输入一个make后就可以等着目标文件生成的感觉还是很舒服的,相比原来使用IDE开发,我觉得makefile让我对编译过程有了进一步的了解。

  首先创建一个c源文件a.c

 代码如下:

#include"stdio.h"void main(){printf("hello makefile\n");}

然后新建一个文本文档,名字改为makefile,然后去掉后缀名,然后编辑这个文件

makefile具体内容如下:

DIR = D:\MyDownloads\Download\VC6.0green\VC98\IncludeLIB_DIR = D:\MyDownloads\Download\VC6.0green\VC98\LibTest:a.objLink a.obj $(LIB_DIR)/LIBC.LIB $(LIB_DIR)/OLDNAMES.LIB $(LIB_DIR)/KERNEL32.LIBa.obj:a.ccl a.c -I $(DIR) $(LIB_DIR)/LIBC.LIB $(LIB_DIR)/OLDNAMES.LIB $(LIB_DIR)/KERNEL32.LIB clean:@echo clean the following files:rm a.exerm a.obj@echo Done!


按代码顺序解释下:

1DIR是创建的一个变量,这个变量就是一个目录,这个目录是存放了c程序中stdio.h的路径

2LIB_DIR同DIR,这个路径是存放了编译中需要用到的静态库的路径,这三个静态库分别为LIBC.LIB   OLDNAMES.LIB  KERNEL32.LIB

4目标文件为Test,冒号后面为生成这个目标文件的依赖文件,也就是a.obj

5链接a.obj还有那三个静态库来生成目标文件

6中间文件a.obj,冒号后面同样是依赖文件

7编译源文件a.c还有三个静态库文件

8clean  便于重新编译链接

9@echo 后面的内容是显示在dos中的内容

10移除a.exe

11移除a.obj

12同9


makefile编写完成后的操作过程:

进入dos窗口,然后进入到含有makefile的目录下,输入make,运行完成后输入a.exe就可以看见打印信息。

然后输出make clean就可以清除a.exe和a.obj


在编写makefile中遇到的问题:

1对于源文件不在同一目录下的处理

解决方法:定义一个目录,然后在编译链接过程中的依赖目录中加入对应库文件,如果是在别的目录下的头文件,那么在依赖关系中前需要加入-I(i)。




0 0
原创粉丝点击