2014-01-20 66 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 

当我这样做时,它显示错误.... 语法错误:单词意外(期待“)”)?语法错误:单词意外(期待“)”)?

Plzz ..帮助..

回答

21

在你的问题中的格式(包括makefile文件和错误消息)太乱了可以肯定的,但我怀疑是您ifeq缩进用TAB。

这是不对的; ifeq命令命令。 (几乎)所有具有TAB字符的行作为makefile中行上的第一个字符传递给shell。 shell不知道ifeq的任何内容,因此,根据您的shell,可能会打印出这样的错误。

你应该只使用$(CC)ifeq块后移动app:目标(并确保$(CC) ...行缩进用TAB键在该行的第一个字符)。

未来请务必使用SO的格式化功能请务必在提问时确切地剪切和粘贴错误消息,以及前后几行上下文。

+1

感谢MadScientist它真的帮了........... –

+0

我刚刚遇到了这个。在ifeq或Makefile语句前没有硬标签(或空格)。该代码看起来丑陋与缺乏缩进,但它修复了这个问题。 – DevNull

+0

您可以在'ifeq'或其他Makefile语句之前使用空格。只有一个真正的TAB作为线上的第一个字符可能会导致问题。但我不同意代码看起来很“丑陋”;事实上,将makefile语句缩减为与配方行相同的级别是非常具有误导性的;它意味着它们是shell命令,但显然它们不是。但是你可以缩进4个空格或类似的东西。 – MadScientist

相关问题