0
     a=10
     b=10

b:
  sum=($a+$b)
  @echo hello
  @echo @sum

我想编写一个计算两个变量之和的生成文件,但它不起作用:我可以知道我在哪里犯了错误吗?

make 文件是如何执行的,默认目标是什么?

我可以更改 makefile 中的默认目标名称吗?

4

2 回答 2

1

您必须为此使用 shell 语法。Make 本身不提供任何数学函数。另请注意,make 配方中的每个逻辑行都在单独的 shell 中运行,这意味着如果您在一行中分配一个值并在下一行中使用它,则该值将丢失(因为设置该值的 shell 退出并开始一个新的)。

所以,做这样的事情:

a = 10
b = 10

b:
        @sum=`expr $(a) + $(b)`; echo $$sum
于 2013-05-30T10:57:06.047 回答
0

默认情况下,makefile 运行第一个目标。要运行特定目标,您可以在命令行中输入所需目标的名称,如下所示make <targetname>

这是makefile的一个例子

a=10
b=10
sum=$(shell expr $(1) + $(2))

compute_sum:
    @echo $(a)+$(b)=$(call sum,$(a),$(b))
    @echo $(sum_a_b)

它定义了一个函数sum来计算 2 个参数的总和。请注意,+标志周围的空间是必需的。

默认目标是compute_sum,它sum使用$(call sum,<arg1>,<arg2>).

.

当然,您可以直接使用 sum 作为变量,而无需使用函数:

a=10
b=10
sum=$(shell expr $(a) + $(b))
于 2015-12-30T09:20:08.230 回答