GNU Make: не понимает, почему мой неявный никогда не найден - PullRequest
0 голосов
/ 25 июня 2018

Я пытаюсь скомпилировать исходники кобола, используя мое собственное неявное правило, но безуспешно.

Контекст:

  1. GNU make 3.81 в AIX
  2. Исходные файлы Cobolнаходятся в исходном каталоге, в то время как скомпилированные файлы находятся в другом *
  3. Расширение исходного файла Cobol - .cbl, скомпилированный файл не имеет расширения, т. е. AZ0001.cbl становится AZ0001 при компиляции

Итак, вот мой Makefile:

COBFLAGS=-g -qTEST -q"SPILL(32648)" -q64 -q"WSCLEAR(32)" -qNOSEQ -qLIST -qNUMBER -qSSRANGE -q"LINECOUNT(0)"
SRCDIR=../../ai_cobol/src/main/cbl/lib
CPYDIR=../../ai_cobol/src/main/cpy
TMPCBL=/tmp/tmpcbl

vpath %.cbl $(SRCDIR)

SOURCES = $(wildcard $(SRCDIR)/*.cbl)
CIBLES = $(notdir $(SOURCES))

.SUFFIXES: .cbl

% : %.cbl
        cob2 $(COBFLAGS) -I$(CPYDIR) $< $(ZZDEBUG)

all: init todo

init:
        rm -rf $(TMPCBL) && mkdir -p $(TMPCBL)

todo: $(CIBLES)
        echo ""

Запуск Gmake никогда не создает мои исходные файлы cobol.Тем не менее, результаты отладки показывают, что gmake находит их:

....
Considering target file `ZZABEND.cbl'.
 Looking for an implicit rule for `ZZABEND.cbl'.
 Trying pattern rule with stem `ZZABEND.cbl'.
 Trying implicit prerequisite `ZZABEND.cbl,v'.
 Trying pattern rule with stem `ZZABEND.cbl'.
 Trying implicit prerequisite `RCS/ZZABEND.cbl,v'.
 Trying pattern rule with stem `ZZABEND.cbl'.
 Trying implicit prerequisite `RCS/ZZABEND.cbl'.
 Trying pattern rule with stem `ZZABEND.cbl'.
 Trying implicit prerequisite `s.ZZABEND.cbl'.
 Trying pattern rule with stem `ZZABEND.cbl'.
 Trying implicit prerequisite `SCCS/s.ZZABEND.cbl'.
 No implicit rule found for `ZZABEND.cbl'.
 Finished prerequisites of target file `ZZABEND.cbl'.
No need to remake target `ZZABEND.cbl'; using VPATH name `../../ai_cobol/src/main/cbl/lib/ZZABEND.cbl'.
Considering target file `ZZASBTPB.cbl'.
 Looking for an implicit rule for `ZZASBTPB.cbl'.
 Trying pattern rule with stem `ZZASBTPB.cbl'.
 Trying implicit prerequisite `ZZASBTPB.cbl,v'.
 Trying pattern rule with stem `ZZASBTPB.cbl'.
 Trying implicit prerequisite `RCS/ZZASBTPB.cbl,v'.
 Trying pattern rule with stem `ZZASBTPB.cbl'.
 Trying implicit prerequisite `RCS/ZZASBTPB.cbl'.
 Trying pattern rule with stem `ZZASBTPB.cbl'.
 Trying implicit prerequisite `s.ZZASBTPB.cbl'.
 Trying pattern rule with stem `ZZASBTPB.cbl'.
 Trying implicit prerequisite `SCCS/s.ZZASBTPB.cbl'.
 No implicit rule found for `ZZASBTPB.cbl'.
 Finished prerequisites of target file `ZZASBTPB.cbl'.
No need to remake target `ZZASBTPB.cbl'; using VPATH name `../../ai_cobol/src/main/cbl/lib/ZZASBTPB.cbl'.
 ......

Так что я не понимаю, в чем проблема .....

1 Ответ

0 голосов
/ 25 июня 2018

Ваши 'CIBLES' содержат имена исходных файлов; попробуйте это изменение:

old: CIBLES = $(notdir $(SOURCES))
new: CIBLES = $(basename $(notdir $(SOURCES)))
...