2013-05-30 67 views
0
 a=10 
    b=10 

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

我想編寫一個makefile來計算兩個變量的總和,但它不工作:我可以知道我犯了哪個錯誤嗎?計算make文件中兩個變量的總和不工作

make文件如何執行以及默認目標是什麼?

我可以更改makefile中的默認目標名稱嗎?

回答

1

你必須爲此使用shell語法。 Make本身並不提供任何數學函數。還要注意,make配方中的每條邏輯行都在一個單獨的shell中運行,這意味着如果您在一行中分配一個值並將其用於下一行,則該值將丟失(因爲值設置的shell已退出並開始一個新的)。

所以,做這樣的事情:

a = 10 
b = 10 

b: 
     @sum=`expr $(a) + $(b)`; echo $$sum 
+0

thanku it'w工作........... – user2427926

0

默認情況下,makefile文件運行的第一個目標。要運行特定目標,可以在命令行中輸入所需目標的名稱,如下所示:make <targetname>

這裏是生成文件

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

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

它定義了一個函數sum到COMPUT的2個參數的總和的一個例子。請注意0​​標誌周圍的空間是必需的。

默認目標是compute_sum,它調用sum函數與$(call sum,<arg1>,<arg2>)

當然,你可以使用和作爲變量直接一個內部消除功能:

a=10 
b=10 
sum=$(shell expr $(a) + $(b)) 
+0

這是假設GNU做;它不會在別處工作。 – Jens

+0

爲什麼這麼複雜? 'sum = $(shell expr $(a)+ $(b))'保存一個完整的fork到一個shell的echo。 – Jens

+0

@Jens:奇怪的是,這確實奏效。我之前沒有工作......不知道發生了什麼:)感謝您的提示! –