我正在尝试制作文件,并试图创建一个简单的跨平台制作文件。
PROG = at
INCLUDES =
LIBPATH =
ifeq ($(PLATFORM), linux)
obj_ext = .o
CC = g++
endif
ifeq ($(PLATFORM), winnt)
obj_ext = .obj
exe_ext = .exe
CC = cl
INCLUDES = C:Program Files (x86)Microsoft Visual Studio 9.0VCinclude
endif
printme:
echo PLATFORM $(PLATFORM)
echo Object extension $(obj_ext)
echo $(INCLUDES)
这给了我错误:
>make printme
echo PLATFORM winnt
PLATFORM winnt
echo Object extension .obj
Object extension .obj
echo C:Program Files (x86)Microsoft Visual Studio 9.0VCinclude
/usr/bin/sh: -c: line 0: syntax error near unexpected token `('
/usr/bin/sh: -c: line 0: `echo C:Program Files (x86)Microsoft Visual Studio 9.0VCinclude'
make: *** [printme] Error 258
我不明白意外的标记'('错误。有人知道为什么吗?
我的名字是:
>make -version
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
This program built for i386-pc-mingw32
此处:
printme:
...
echo $(INCLUDES)
以不可预知的字符串作为参数调用echo。许多神奇的字符将使外壳以意想不到的方式运行。重定向,通配符,然后是(list)
(在您的示例中:(x86)
),用于在子shell中执行命令列表。
printme:
...
echo '$(INCLUDES)'