2015-03-13 6 views
0

Как бы это GNU Makefile ищет окна (я должен использовать Nmake и CL):Компиляция нескольких файлов с помощью 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) /[email protected] $** 

utils.obj: utils.c 
    $(CPP) $(CFLAGS) /[email protected] $** 

bucket.obj: bucket.c 
    $(CPP) $(CFLAGS) /[email protected] $** 

hashset.obj: hashset.c 
    $(CPP) $(CFLAGS) /[email protected] $** 

main.obj: main.c 
    $(CPP) $(CFLAGS) /[email protected] $** 

clean: 
    del *.obj main 

Обратите внимание, что моя домашняя работа выполняла хешсет, который я сделал, это просто make-файл, который меня сейчас беспокоит. Я продолжаю получать ошибки для каждого файла: неожиданный конец файла

+0

Что говорит ошибка? (Ошибка, вся ошибка и только ошибка) – immibis

+0

фатальная ошибка C1004: обнаружен неожиданный конец файла NMAKE: фатальная ошибка U1077: «F: \ Program Files \ Microsoft Visual Studio 12.0 Ultimate 2013 \ VC \ BIN \ cl.EXE "': код возврата' 0x2 ' Стоп. –

+0

Вы пытались нажать ENTER после последней строки в Makefile? – immibis

ответ

0

Спасибо за помощь, тем временем я понял, ответ сам:

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

build: main 

main: $(OBJ_LIST) 
    $(CPP) /[email protected] $** 

clean: 
    del *.obj main.exe 
0

C1004 - ошибка компилятора. Попробуйте локализовать, какой именно вызов компилятора вызывает его. В любом случае $** выглядит неправильно. Вместо этого для правил .obj используйте $< и $^ для правила ссылки.

 Смежные вопросы

  • Нет связанных вопросов^_^