2014-01-20 13 views
7
PLATFORM = x86 
CUD = cuda 
X86 = x86 
PAN = panda 
ARM = arm 

app: 
    ifeq($(PLATFORM),$(CUD)) 
CC = dum3 
endif 
ifeq($(PLATFORM), $(X86)) 
CC = gcc 
endif 
ifeq($(PLATFORM),$(PAN)) 
CC = dum1 
endif 
ifeq($(PLATFORM),$(ARM)) 
CC = dum2 
endif 


$(CC) -o ./Executable/list ./Source/ll_main.c ./Library/liblst.a 
./Executable/list 

これを行うと、エラーが表示されます.... 構文エラー:予期しない単語(expecting ")")?構文エラー:予期しない単語(expecting ")")?

Plzzは...あなたの質問(メイクファイルとエラーメッセージの両方)でのヘルプ...

答えて

21

書式設定があまりにも確認するために台無しにされていますが、私の疑いはあなたのifeqはTABで字下げされていることです。

これは正しくありません。 ifeqmakeコマンドです。 (ほぼ)TAB文字を含むすべての行は、メイクファイルの行の最初の文字としてシェルに渡されます。シェルはifeqについて何も知らないので、シェルによっては、そのようなエラーが出るかもしれません。

あなただけ$(CC)の使用前にifeqブロック後app:ターゲットを移動(と$(CC) ...ラインがその行の最初の文字としてTABでインデントされていることを確認する)必要があります。

今後SOの書式設定機能を使用して、エラーメッセージを正確に切り取り、前後にいくつかの文脈で質問してください。

+1

ありがとうMadScientist本当に助けてくれました........... –

+0

私はちょうどこれに遭遇しました。 'ifeq'やMakefileの前にハード・タブ(またはスペース)を置かないでください。このコードはインデントの不足で醜いように見えますが、この問題は修正されています。 – DevNull

+0

'ifeq'やその他のMakefile文の前にスペースを入れることができます。行の最初の文字としての実際のTABだけが問題を引き起こす可能性があります。しかし私は、コードが "醜い"と思われることに同意します。実際には、makefile文をレシピ行と同じレベルにインデントするのは非常に誤解を招きます。明らかにそうでないときはシェルコマンドであることを意味します。しかし、あなたは4つのスペースなどをインデントすることができます。 – MadScientist

関連する問題