вопрос про makefile

gasanot

тут все нормально:


src = Globals.ml AfterY.ml
objs = Globals.cmo AfterY.cmo
all: $(objs)
Globals.cmo: Globals.ml
ocamlc -c Globals.ml
AfterY.cmo: AfterY.ml
ocamlc -c AfterY.ml



Но хотелось бы сделать так:


src = Globals.ml AfterY.ml
objs = Globals.cmo AfterY.cmo
all: $(objs)
.cmo.ml:
ocamlc -c $<


При попытке nmake (по последнему файлу) выдается ошибка:
Microsoft (R) Program Maintenance Utility Version 6.00.8168.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.
NMAKE : fatal error U1073: don't know how to make 'AfterY.cmo'
Stop.
хотя написано вроде по инструкции.
В чем тут может быть дело?

Bost170

Может так?

.SUFFIXES: .cmo .ml
src = Globals.ml AfterY.ml
objs = Globals.cmo AfterY.cmo
all: $(objs)
.cmo.ml:
ocamlc -c $<

ppplva

Не .cmo.ml , а .ml.cmo

gasanot

не работает никак - ни .cmo.ml: ни .ml.cmo ни .siffixes: .cmo .ml
Но для сишных исходников все работает очень здорово:
sources = hw.c
objs = hw.obj
LINK = link
CC = cl -c -Gz
all:hw.exe
hw.exe: $(objs)
$(LINK) $(objs) user32.lib -subsystem:windows -entry:main
.c.obj:
$(CC) $<

ppplva

Хз. Наверное, ты что-то путаешь. Попробуй и то, и то.
.cmo.ml означает "правило как по .cmo сделать .ml", что, насколько я понимаю, не то что требуется. Отсюда ошибка "don't know how to make 'AfterY.cmo'", т.к. он считает AfterY.cmo отсутствующим исходником.
Оставить комментарий
Имя или ник:
Комментарий: