admin管理员组文章数量:1416681
最近因为工作关系需要接触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\Include
LIB_DIR = D:\MyDownloads\Download\VC6.0green\VC98\Lib
Test:a.obj
Link a.obj $(LIB_DIR)/LIBC.LIB $(LIB_DIR)/OLDNAMES.LIB $(LIB_DIR)/KERNEL32.LIB
a.obj:a.c
cl a.c -I $(DIR) $(LIB_DIR)/LIBC.LIB $(LIB_DIR)/OLDNAMES.LIB $(LIB_DIR)/KERNEL32.LIB
clean:
@echo clean the following files:
rm a.exe
rm 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)。
版权声明:本文标题:windows7下makefile例程 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1727509398a1261173.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论