Я пытаюсь изменить make-файл таким образом, s.th. его можно запустить с nmake
на Windows (7, в моем случае) и перейти от gcc к icl.wildcard не распознается при переносе makefile в 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.
Также не используется -o
для компилятора windows icl.
Так что я сделал, было
# ==================================================================================== #
# = 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)
.
Я не вижу ничего плохого в этой линии.
Каким образом makefile должен быть переписан? – User1291
Явным списком исходных файлов был бы самый простой маршрут. Если вам нужно сгенерировать его во время сборки, ознакомьтесь с этим [вопросом] (http://stackoverflow.com/questions/841597/use-nmake-to-make-all-source-in-a-directory). Но вы уже используете 'gcc', поэтому' gmake', вероятно, тоже доступен. Просто используйте это. – a3f
Я не использую gcc ... Я думаю, что я упоминал, что я перешел от gcc к icl именно потому, что не хочу использовать MinGW. – User1291