2011-08-03 102 views
1

我有一個Makefile一些東西一樣如下:的Makefile IFEQ問題

.... 
ifeq ($(strip $(MY_LIB)), $(strip $(SH_LIB)) 
    @echo "TRUE-$(MY_LIB) $(SH_LIB)" 
    ...... 
else 
    @echo "FALSE-$(MY_LIB) $(SH_LIB)" 
    ...... 
endif 
...... 

有了這個,我進入的問題。這就是當它們都具有相同的值時它會進入其他的。我確認了印刷品,並顯示兩者具有相同的字符串。 在根生成文件,

SH_LIB := display 

即使MY_LIB是有顯示,它總是轉到其他部分並打印 FALSE - 顯示器顯示。

經過很多的變化,我能夠得到它。

.... 
ifeq ("strip $(MY_LIB)", "display") 
    @echo "TRUE-$(MY_LIB) $(SH_LIB)" 
    ...... 
else 
    @echo "FALSE-$(MY_LIB) $(SH_LIB)" 
    ...... 
endif 
..... 

這種變化後,走到裏面TRUE。 有人可以解釋一下嗎?

編輯: 我已經把類似的代碼放在根make文件中,它完美的工作。

+0

所以你不能,而無需其他的makefile'include'這一個重現錯誤。嘗試減少這些文件到最低限度,仍然顯示錯誤,然後發佈整個事情。關於括號的 – Beta

回答

0

在您的第一個剪輯中,嘗試刪除逗號後面的ifeq內的空格。你還缺少一個結尾右括號在ifeq

ifeq ($(strip $(MY_LIB)),$(strip $(SH_LIB))) 
    @echo "TRUE-$(MY_LIB) $(SH_LIB)" 
    ...... 
else 
    @echo "FALSE-$(MY_LIB) $(SH_LIB)" 
    ...... 
endif 
+0

,這是一個複製/粘貼錯誤。所以在實際的文件中很好。 (否則,它會給出錯誤)。即使在刪除「,」之後的空格之後,我仍然面臨同樣的問題。 – hari

+0

嗯,我試了代碼,它按預期工作... –

+0

我試圖在根Makefile及其工作。這是.mk文件,它是從其他一些makefile中包含的。 – hari