Makefile实例003—=与:=
源码路径github
链接: link
第一步创建文件 main.c (和上一篇文章一样)
#include "main.h"
void main()
{
show_purpose();
}
第二步创建文件 main.h(和上一篇文章一样)
#ifndef __MAIN_H__
#define __MAIN_H__
#include <stdio.h>
void show_purpose()
{
printf("i wish you become better\n");
}
#endif
第三步创建文件 Makefile
file_name := main
file_suffix := .c
file_need := ${file_name}${file_suffix}
main:main.o
echo file_need is $(file_need)
gcc $(file_need) -o main
clean:
rm -rf *.i *.s *.o main
第四步创建文件 Makefile1
file_suffix := .c
file_need := ${file_name}${file_suffix}
file_name := main
main:main.o
echo file_need is $(file_need)
gcc $(file_need) -o main
clean:
rm -rf *.i *.s *.o main
第五步创建文件 Makefile2
file_suffix = .c
file_need = ${file_name}${file_suffix}
file_name = main
main:main.o
echo file_need is $(file_need)
gcc $(file_need) -o main
clean:
rm -rf *.i *.s *.o main
运行效果
使用Makefile的运行效果
使用Makefile1运行结果
使用Makefile2运行结果
重点说明
1.Makefile1失败,因为:=不会遍历本文件来寻找file_name所以最后生成的${file_need}的值不对;
2.Makefile2成功的原因,因为=会遍历本文件来寻找file_name所以最后生成的${file_need}的值正确;
3.建议是用Makefile里面的:=来编写 Makefile;这样不容易出现=遍历本文件而出错(在有多个同样变量名的时候)