如何写一个makefile
来源:互联网 发布:网络创业与实践课答案 编辑:程序博客网 时间:2024/05/16 12:16
第一版
目标:依赖
命令
#命令前是tab键
test:main.o utils.o
gcc -o main.o utils.o -lm
main.o:main.c
gcc -c main.c -lm
utils.o:utils.c
gcc -c utils.c -lm
#-lm是因为程序里用了math.h
========================================
第二版
常见的自动变量
$@:目标
$^:依赖的不重复全部项
$<:依赖的第一项
$*:不包含扩展名的目标文件名称
$+:所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件
$?:所有时间戳比目标文件晚的依赖文件,并以空格分开
$%:如果目标是归档成员,则该变量表示目标的归档成员名称
test:main.o utils.o
gcc -o $@ $^ -lm
main.o:main.c
gcc -c $^ -lm
utils.o:utils.c
gcc -c $^ -lm
===============================================================
第三版
.c.o表示所有的 .o文件都是依赖与相应的.c文件
test:main.o utils.o
gcc -o $@ $^ -lm
.c.o :
gcc -c $< -lm
===================================================================
第四版
常见的预定义变量
AR 库文件维护程序的名称,默认值为ar
AS 汇编程序的名称,默认值为as
CC C编译器的名称,默认值为cc
CPP C预编译器的名称,默认值为$(CC) –E
CXX C++编译器的名称,默认值为g++
FC FORTRAN编译器的名称,默认值为f77
RM 文件删除程序的名称,默认值为rm –f
ARFLAGS 库文件维护程序的选项,无默认值
ASFLAGS 汇编程序的选项,无默认值
CFLAGS C编译器的选项,无默认值
CPPFLAGS C预编译的选项,无默认值
CXXFLAGS C++编译器的选项,无默认值
FFLAGS FORTRAN编译器的选项,无默认值
CC = cc
CFLAGS = -O
CFILES = *.c
LIBS=-lm
test:main.o utils.o
$(CC) -o $@ $^ $(LIBS)
.c.o :
$(CC) -c $< $(LIBS)
最后需要加上clean
scratch:
make test
#clean无法执行的时候添加这个
make clean
test:main.o utils.o
gcc -o $@ $^ -lm
.c.o :
gcc -c $< -lm
#.PHONY:伪目标,不产生目标文件的意思
.PHONY: clean
clean:
rm -f *.o
- 如何写一个makefile
- 如何写一个精简的Makefile
- 如何写一个最简单的MAKEFILE
- 自己动手写一个Makefile
- 快速写一个makefile
- 写一个makefile
- 如何写Makefile
- 如何写makefile?
- 如何写makefile
- 如何写 makefile文件
- 如何写makefile
- 如何写makefile
- [转]如何写makefile
- 如何写 Makefile文件
- 如何写Makefile文件
- 如何写Makefile文件
- 如何写Makefile文件
- 如何写makefile
- python正则表达式与文本匹配
- React Native 系列(八) -- 导航
- libevent: evbuffer缓冲
- Java生成名片式的二维码源码分享
- Js循环语句与条件语句
- 如何写一个makefile
- Linux下安装Tomcat7以及常见错误
- 2017.8.17考试
- 把图片的某种颜色改为透明
- HDU 6138 Fleet of the Eternal Throne 多校#8 AC自动机
- HDU 6138 Fleet of the Eternal Throne (2017多校8
- sql多表联查
- 第三章-3基本类型转换
- SSAS