使用nmake.exe窗口在makefile中无法识别addprefix命令

时间:2013-03-08 10:03:59

标签: windows makefile gnu-make nmake

all: prd.exe

CC=cl
CFLAGS=-O2 -I../src -I. /W4
LDFLAGS = /Zi
LIBSRC = $(addprefix ../lib/, \
        open.c malloc.c \
     ) \
     $(addprefix ../src/, \
        main.c \
      ) \
      helper.c

LIBOBJS = $(LIBSRC:.c=.o)

prd.exe: ../src/main.obj
$(CC) $(LDFLAGS) -Fe$@ *.o

../src/main.obj: ../src/main.c
$(CC) $(CFLAGS) $(LIBOBJS) -c $< -Fo $@ 

.c.o:
$(CC) $(CFLAGS) $(LIBOBJS) -c $< -Fo $@ 

.c.i:
$(CC) $(CFLAGS) $(LIBOBJS) -C -E $< > $@

clean:
del /s /f /q ..\lib\*.o ..\src\*.o *.o *.exe *.pdb

distclean: clean

我收到此错误

致命错误U1000:语法错误:')'在第6行的宏调用中丢失

我在这里遗漏了什么吗? nmake确实识别addprefix,对吧?

1 个答案:

答案 0 :(得分:2)

不,addprefix是GNU make扩展。你有一个GNUmakefile需要GNU make(gmake)来处理。

或者,您可以重写GNU makefile以不使用GNU扩展。在你的情况下,这应该很简单:

LIBSRC = $(addprefix ../lib/, \
        open.c malloc.c \
     ) \
     $(addprefix ../src/, \
        main.c \
      ) \
      helper.c

变为

LIBSRC = ../lib/open.c ../lib/malloc.c ../src/main.c helper.c