使用CL编译多个文件

时间:2015-03-13 21:02:23

标签: c windows makefile nmake cl

这个GNU makefile如何查找windows(我必须使用nmake和CL):

CC = gcc
CFLAGS = -Wall -Wextra -g

build: main

main: utils.o bucket.o hashset.o main.o

utils.o: utils.c utils.h

bucket.o: bucket.c bucket.h

hashset.o: hashset.c hashset.h

main.o: main.c

.PHONY:
clean:
    rm -f *.o *~ main

我能想到的就是:

CPP = cl
CFLAGS   = /nologo /W4 /EHsc /Za

build : main

main: utils.obj bucket.obj hashset.obj main.obj
    $(CPP) $(CFLAGS) /Fe$@ $**

utils.obj: utils.c
    $(CPP) $(CFLAGS) /Fo$@ $**

bucket.obj: bucket.c
    $(CPP) $(CFLAGS) /Fo$@ $**

hashset.obj: hashset.c
    $(CPP) $(CFLAGS) /Fo$@ $**

main.obj: main.c
    $(CPP) $(CFLAGS) /Fo$@ $**

clean:
    del *.obj main

请注意,我的作业正在实现一个hashset,我已经完成了,它只是makefile,现在让我烦恼。 我不断收到每个文件的错误:意外的文件结尾

2 个答案:

答案 0 :(得分:0)

C1004是编译器错误。尝试本地化哪个特定的编译器调用导致它。无论如何,$**看起来并不合适。相反,对于.obj规则,请使用$<$^作为链接规则。

答案 1 :(得分:0)

感谢您的帮助,同时我自己找到了答案:

CPP = cl
OBJ_LIST = main.obj utils.obj bucket.obj hashset.obj

build: main

main: $(OBJ_LIST)
    $(CPP) /Fe$@ $**

clean:
    del *.obj main.exe