makefile – GNU make 3.81:eval函数不工作?
发布时间:2020-12-16 05:30:02 所属栏目:百科 来源:网络整理
导读:我最近从GNU make文档中发现了这个引用eval函数的示例代码.我真的很喜欢它,但是当我试图在我的机器上测试(make 3.81 / Debian)时,它所做的只是尝试链接服务器,而不是首先编译c文件?为什么?使3.81不兼容吗? 外壳输出: $makecc -o servercc: no input file
我最近从GNU make文档中发现了这个引用eval函数的示例代码.我真的很喜欢它,但是当我试图在我的机器上测试(make 3.81 / Debian)时,它所做的只是尝试链接服务器,而不是首先编译c文件?为什么?使3.81不兼容吗?
外壳输出: $make cc -o server cc: no input files 码: PROGRAMS = server client server_OBJS = server.o server_priv.o server_access.o server_LIBS = priv protocol client_OBJS = client.o client_api.o client_mem.o client_LIBS = protocol # Everything after this is generic .PHONY: all all: $(PROGRAMS) define PROGRAM_template = $(1): $$($(1)_OBJS) $$($(1)_LIBS:%=-l%) ALL_OBJS += $$($(1)_OBJS) endef $(foreach prog,$(PROGRAMS),$(eval $(call PROGRAM_template,$(prog)))) $(PROGRAMS): $(LINK.o) $^ $(LDLIBS) -o $@ clean: rm -f $(ALL_OBJS) $(PROGRAMS) 解决方法
我认为如果从定义行中删除=,它将工作:
define PROGRAM_template ... endef 我已经用GNUMake 3.81测试了.至于为什么这个工作和手册中的版本没有,我不知道. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |