makefile语法基础

2019-11-15  本文已影响0人  migill
1、什么是makefile?
2、makefile里有什么?

makefile包含以下五个:

3、makefile的规则
target ...  :  prerequisites ...
command
或者:
target ... : prerequisites... ;command

makefile 示例

#当前目录存在main.c tool.c tool.h三个文件
#下面是makefile文件内容
main: main.o too.o
    gcc main.o tool.o -o main
.PHONY: clean
clean:
   -rm main *.o
----------------------------------------------
//执行make后输出如下
cc -c -o main.o main.c
cc -c -o tool.o tool.c
//生成一个可执行文件main
gcc main.o tool.o -o main
4、makefile是如何工作的?

默认方式下,输入make命令后:

5、makefile中使用变量?
objects = main.o tool.o
main: $(objects)
    gcc $(objects) -o main

.PHONY:clean
clean:
    -rm main $(objects)
-------------------------------------------
//执行make后输出如下
cc -c -o main.o main.c
cc -c -o tool.o tool.c
//生成一个可执行文件main
gcc main.o tool.o -o main
6、makefile中如何引用其他的makefile?
#语法格式
include <filename>
#举个例子,你有这样几个 Makefile: a.mk、b.mk、c.mk,还有一个文件叫 foo.make,以及一个变量$(bar),其包含了e.mk 和 f.mk 
include foo.make *.mk $(bar)
#等价于:
include foo.make a.mk b.mk c.mk e.mk f.mk
#如果文件找不到,而你希望make时不理会那些无法读取的文件而继续执行,可以在include前加一个减号“-”,如:
-include <filename>
7、环境变量 MAKEFILES
8、makefile预定义变量
9、makefile自动变量
9、makefile函数
#不带参数
define FUNC
$(info echo "hello")
endif
$(call FUNC)
-----------------------------
输出:hello

#带参数
define FUNC1
$(info echo $(1) $(2))
endif
$(call FUNC1,hello,world)
-----------------------------
输出:hello world
10、make的工作流程

GNU的make工作时的执行步骤如下:

上一篇 下一篇

猜你喜欢

热点阅读