make-файл nmake не использует правило вывода - PullRequest
0 голосов
/ 12 июня 2018

Я пытаюсь получить объектные зависимости цели, чтобы использовать правило вывода / неявного.Вместо этого я получаю эту ошибку

NMAKE: фатальная ошибка U1073: не знаю, как заставить 'interface1.obj' остановиться.NMAKE: фатальная ошибка U1077: 'cd': код возврата '0x2' Стоп.

последняя вызываемая цель:

interface.dll: interface1.obj interface2.obj

У меня есть правила вывода в make-файле, напримерthis

.SUFFIXES: .c .cpp .obj

.c.obj:
      $(CC) $(CFLAGS) $<

.cpp.obj:
      $(CC) $(CFLAGS) $<

Я пытался повторить тесты после вызова .c.obj, и он даже не попал туда.Кажется, он не распознает правила при попытке создать interface.obj. Я также пытался создать правило с такими путями:

{$(SOURCE_DIR)}.c{$(BIN_PATH)}.obj:
    $(CC) $(CFLAGS) $<

Мне удалось создать цель interface1.obj и скомпилировать файлы.время от времени, но я не могу получить логическое / неявное правило для распознавания и использования.

1 Ответ

0 голосов
/ 21 июня 2018
{$(SOURCE_DIR)}.c{$(BIN_PATH)}.obj: 

означает, что объект, который вы пытаетесь создать interface1.obj, находится в $(BIN_PATH).
Если вы перечислите ваши объекты как interface1.obj, тогда будет предполагаться, что interface1.obj находится в текущем каталоге.

Таким образом, вам нужно записать зависимые объектные файлы следующим образом: $(BIN_PATH)\\interface1.obj

и наоборот, вы можете написать правило как {$(SOURCE_DIR)}.c{}.obj: и ваш зависимый объект как interface1.obj, если бы они былидействительно в текущем каталоге.

то же самое относится и к исходным файлам.

-Kelsey

...