Android MK(Makefile)语法
基本语法规则
1、目标文件:目标文件是Makefile中需要生成的文件,通常以".o"或".so"为扩展名。
2、依赖关系:目标文件的依赖关系描述了目标文件所依赖的其他文件。
3、命令:命令用于生成目标文件,可以是一个shell命令或make工具的命令。
4、变量:变量用于存储值,可以在Makefile中使用,以便简化和重用代码。
5、注释:注释用于解释Makefile中的指令,可以使用"#"符号进行标记。
常用指令
1、默认目标:指定Makefile中的默认目标,当没有指定目标时,将生成该目标。
默认目标: all
2、编译目标:编译C/C++源文件为目标文件。
编译目标: obj/%.o: src/%.c
$(CC) c $(CFLAGS) $< o $@
3、链接目标:将多个目标文件链接为可执行文件或库文件。
链接目标: bin/myapp: obj/main.o obj/utils.o obj/other.o
$(CC) $(LDFLAGS) $^ o $@
4、清除目标:删除生成的目标文件和可执行文件。
清除目标: clean
rm rf obj/* bin/*
5、伪目标:用于表示一组相关的文件,通常用于自动化生成头文件等任务。
伪目标: include/%.h: src/%.c
$(CC) E $< > $@
变量使用示例
1、CFLAGS:编译器选项,Wall g。
CFLAGS := Wall g
2、CC:编译器名称,例如gcc或clang。
CC := gcc
3、LDFLAGS:链接器选项,lpthread。
LDFLAGS := lpthread
相关问题与解答
问题1:如何指定多个源文件同时编译?
解答:可以使用通配符"%"匹配多个源文件,并使用空格分隔,obj/%.o: src/*.c。
问题2:如何指定不同的编译器选项给不同的目标文件?
解答:可以在编译命令中使用变量来传递不同的编译器选项。$(CC) c $(CFLAGS) $< o $@。$<表示依赖的文件名,$@表示目标文件名,可以根据需要修改CFLAGS变量来传递不同的编译器选项。
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/523712.html