这个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,现在让我烦恼。 我不断收到每个文件的错误:意外的文件结尾
答案 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