2016-10-10 3 views
0

私のプロジェクトの1つでは、以下のエラーに直面しています。私は二つの環境を持っており、二つの環境で異なるifeqの機能を観察しています。メイクファイルの文字列の比較#Ifeq

最初の環境では、以下のコードは正常に動作しています。

​​

第2環境では、同じコードが機能しません。それは、誰かが私がこれを整理するのに役立つだろうか?私は

ifeq (($FIRST),'1') 

にコード

ifeq (($FIRST),1) 

を変更する場合にのみ機能しますか

+1

shoulden'tのように見える、それは最初の$(も)? – Botnic

+0

Makeのどのバージョンを使用していますか? – Beta

答えて

2

コメントに記載されているように、FIRSTを引用符で囲む必要があります。 `$(FIRST)。 MakefileとBashは異なる構文を持っていることに注意してください。 Makefileは変数bashの周りに丸い引用符を必要とします。

ifeqの空白も削除してください。 ifeq ($(FIRST),1)はunstripedラインと比較しているため、余分な空白を失敗する可能性がありますコマンドをいくつかのケースでは注意してください:それは簡単な'1'

だから、メイクファイルの意志の代わりに'1 'に比較することができることは

FIRST = 1 

ifeq ($(FIRST),1) 
    ENABLE_CODE += -D'ENABLE_PROGRAM' 
endif 

all: 
     @echo FIRST $(FIRST) 
     @echo ENABLE_CODE $(ENABLE_CODE)