मुझे हाल ही में जीएनयू से उदाहरण कोड का यह टुकड़ा मिला है जो दस्तावेज बनाता है जो eval function को संदर्भित करता है। मुझे वास्तव में यह पसंद है, लेकिन जब मैंने इसे अपनी मशीन पर परीक्षण करने की कोशिश की (3.81/डेबियन बनाएं), तो यह सब सी फाइलों को संकलित किए बिना सर्वर को जोड़ने का प्रयास कर रहा है ... क्यों? 3.81 अनुकूल नहीं है?जीएनयू 3.81 बनाते हैं: eval function काम नहीं कर रहा है?
शैल उत्पादन:
$ 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 [email protected]
clean:
rm -f $(ALL_OBJS) $(PROGRAMS)
धन्यवाद, यह काम किया। अजीब क्यों वे इसे गलत तरीके से दस्तावेज करते हैं। – user1344105
समस्या यह है कि '=' जीएनयू में जोड़ा गया एक फीचर 3.82 है और जीएनयू मैन्युअल बनाता है (gnu.org पर प्रतिलिपि सहित, जहां Google अधिकतर लोगों को भेज देगा) थोड़ी सी संकेत नहीं देता है जब कोई सुविधा विशिष्ट होती है 3.82 तक। Http://www.gnu.org/software/make/manual/html_node/Reading के साथ http://developer.apple.com/library/mac/#documentation/developertools/gnumake/make_3.html#SEC22 (3.81) की तुलना करें -Makefiles.html # रीडिंग-मेकफ़ाइल (3.82) – reinierpost
स्पष्टीकरण के लिए बड़ा धन्यवाद! – user1344105