1
我试图以s.th的方式修改makefile。可以在Windows上运行nmake
(在我的情况下为7),并从gcc更改为icl。将makefile迁移到windows时无法识别通配符
由于我不知道很多关于在Windows上创建生成文件或编译的C代码,我有在得到这个工作有些麻烦......
原来的makefile是这样的:
# ==================================================================================== #
# = Executable
# ==================================================================================== #
BIN = rename_me
# ==================================================================================== #
# = Compiler settings
# ==================================================================================== #
CC = gcc
CFLAGS += -O3 -std=c99 -Wall
LIBS +=
# ==================================================================================== #
# = Object Files
# ==================================================================================== #
%.o : %.c %.h
$(CC) $(CFLAGS) -c $< -o [email protected]
%.s : %.c
$(CC) $(CFLAGS) -S $< -o [email protected]
SRCS=$(wildcard *.c)
OBJS=$(SRCS:.c=.o)
all: $(OBJS)
$(CC) $(OBJS) $(LIBS) -o $(BIN)
clean:
rm -rf *.o
rm -rf $(BIN)
首先,+=
对于nmake不存在。
对于windows icl编译器,-o
也没有。
所以我做什么,是
# ==================================================================================== #
# = Executable
# ==================================================================================== #
BIN = rename_me.exe
# ==================================================================================== #
# = Compiler settings
# ==================================================================================== #
CC = icl
# += is an extension not supported by windows
CFLAGS = /O3 /C99 /Wall $(CFLAGS)
LIBS = $(LIBS)
# ==================================================================================== #
# = Object Files
# ==================================================================================== #
# no -o on win
%.o : %.c %.h
$(CC) $(CFLAGS) /c $<
%.s : %.c
$(CC) $(CFLAGS) /S $<
SRCS=$(wildcard *.c)
OBJS=$(SRCS:.c=.o)
all: $(OBJS)
$(CC) $(OBJS) $(LIBS)
clean:
del /S/F *.o
del /S/F $(BIN)
呀,粗糙,但我想我应该看它是否运行之前,我试图找到BIN
好一个更优雅的解决方案,这不是”吨。
makefile(53) : fatal error U1000: Syntax error: missing ")"
53行,这就是SRCS=$(wildcard *.c)
。
尽管如此,我没有发现该行有任何问题。
如何重写生成文件? – User1291
明确列出源文件将是最简单的路线。如果您必须在构建时生成它,请查看此[问题](http://stackoverflow.com/questions/841597/use-nmake-to-make-all-source-in-a-directory)。但是你已经在使用'gcc',所以'gmake'可能也是可用的。只要使用它。 – a3f
我没有使用gcc ...我想我确实提到了我从gcc更改为icl,完全是因为我不想使用MinGW。 – User1291