上例子:
.IGNORE: gao.3 LIBS =gao.1 gao.2 gao.3 all:$(LIBS) @echo final gao.1: gao.2 @echo gao.1 gao.2: gao.3
./me.o @echo gao.2 gao.3: @echo gao.3
运行结果:
gao.3
./me.o
hello
make:***[gao.2] Error 2
此时由于仅忽略 gao.3 中的错误,所以在 gao.2 中失败退出了。
结束
上例子:
.IGNORE: gao.3 LIBS =gao.1 gao.2 gao.3 all:$(LIBS) @echo final gao.1: gao.2 @echo gao.1 gao.2: gao.3
./me.o @echo gao.2 gao.3: @echo gao.3
运行结果:
gao.3
./me.o
hello
make:***[gao.2] Error 2
此时由于仅忽略 gao.3 中的错误,所以在 gao.2 中失败退出了。
结束
JNA如何使用以及要注意的坑
上例子主 Makefile内容:SUBDIRS=foo bar bazsubdirs: for dir in $(SUBDIRS); do\ $(MAKE) -C $$dir; \ done当前目录下各个子目录的Makfile内容:./foo/Makefile:foo: @echo "foo..."./bar/Makefile:bar: @echo "bar..."./baz/Makefile:baz: @echo "baz..."执行结果:for dir in foo bar baz;do\ make -C $dir; \donem
当前目录中存在 gao.g 文件(其实际内容是一个简单的C语言程序)先是用如下的例子来看:例子一.SUFFIXES:.SUFFIXES: .g .oLIBS=gao.oall: $(LIBS)%.o:%g @echo "in %.o:%g"运行结果是: no rule to make target gao.o...也就是说 .SUFFIXES 和 %.o:%g 模式规则一起使用没有效果。再看看如下的例子:把.SUFFIXES 去掉看看,例子二LIBS=gao.oall: $(LIBS)%.o:%g @echo "in %.o:%g"运行结果仍然是:no
上例子SHELL=bash.DELETE_ON_ERRORS: LIBS=foo.gaoall: $(LIBS) @echo finalfoo.gao: @echo $@ touch $@ ./me.o其中,me.o 程序是由C语言编译而成。其内容是显示 helloworld ,然后 return 2(即非正常退出)。运行结果要看如何来运行:make --dry-run的运行结果:echo foo.gaotouch foo.gao./me.oecho final此时 ls 命令可以发现,在当前目录下,并没有 foo.gao 文件。而如果是仅仅运行 make,结果则是这样...
上例子override gao=abcgao=12345all: @echo $(gao)运行的结果,makeabcoverride 指令比其他的变量赋值优先级要高。结束
见如下例子:LIB=*.oall: $(LIB) @echo $^$(LIB): @echo $@执行结果:*.o*.o所以
举报文章
请选择举报类型
补充说明
0/200
上传截图
格式支持JPEG/PNG/JPG,图片不超过1.9M