【发布时间】:2014-04-27 23:53:26
【问题描述】:
我知道这是一个简单的问题,但我找不到原因/解决方案。我在 Makefile 中定义了一个简单的 shell 函数,如下所示,
define my_function
my_var="Hello";
echo $(my_var);
echo Recvd arg = $(1);
endef
请注意,这是在 makefile 中定义的,我在我的规则之一中使用,
$(obj_dir)/%.o: $(src_base)/%.cpp
$(q)$(CXX) $(CXXFLAGS) -o $@
$(call my_function, $@)
但是局部变量 my_var 永远不会被赋值。我使用 eval、set 和 export 尝试了很多东西,但似乎没有为函数中的变量赋值。并且 echo $(my_var) 不会打印任何内容。这在 shell 脚本中工作正常,但在 Makefile 中使用时,会导致此问题。
请帮我解决这个问题。帮助将不胜感激。
【问题讨论】:
-
您没有提供足够的信息。您究竟是如何使用
$(call my_function...)的?它在食谱里面吗?或不?请提供您使用调用函数的完整上下文。 -
调用在我的构建规则之一内。这样, $(obj_dir)/%.o: $(src_base)/%.cpp $(q)$(CXX) $(CXXFLAGS) -o $@ $(call my_function, $@) 我已经验证了这个函数是被正确调用,但里面的操作,即变量赋值不起作用。
-
问题描述已更新。请看一看。