C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了makefile – GNU make 3.81:eval函数不工作?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我最近从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测试了.至于为什么这个工作和手册中的版本没有,我不知道.

大佬总结

以上是大佬教程为你收集整理的makefile – GNU make 3.81:eval函数不工作?全部内容,希望文章能够帮你解决makefile – GNU make 3.81:eval函数不工作?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。