MinGW: «Нет правила для создания цели»

#c #makefile #mingw

#c #makefile #mingw

Вопрос:

Я понимаю, что этот тип вопроса задавался ранее, однако я искал везде и не мог найти решения.

Я пытаюсь вызвать makefile с помощью утилиты make от MinGW, однако я продолжаю сталкиваться с этой ошибкой:

D:Aufgabe 4>mingw32-make -f aufgabe4.make mingw32-make: * Нет правила для создания целевого half_adder.o,', needed by объекта aufgabe4.out’. Стоп.’

Это содержимое файла makefile:

 aufgabe4.out : half_adder.o, adder.o, program.o
    g   -o aufgabe4.out half_adder.o adder.o program.o

half_adder.o: half_adder.h half_adder.cpp
   g   -c half_adder.cpp

adder.o: half_adder.h half_adder.cpp adder.h adder.cpp
   g   -c adder.cpp

program.o: half_adder.h adder.h program.cpp
   g   -c program.cpp

clean:
    rm *.o aufgabe4.out
  

Это содержимое каталога:

 D:Aufgabe 4>dir
Volume in drive D has no label.
Volume Serial Number is 6E0B-16A3

Directory of D:Aufgabe 4

11/08/2011  12:29 PM    <DIR>          .
11/08/2011  12:29 PM    <DIR>          ..
11/08/2011  12:02 PM               381 adder.cpp
11/08/2011  11:52 AM                88 adder.h
11/08/2011  01:01 PM               346 aufgabe4.make
11/08/2011  11:56 AM               171 half_adder.cpp
11/08/2011  11:54 AM                78 half_adder.h
11/08/2011  12:15 PM               421 program.cpp
           6 File(s)          1,485 bytes
           2 Dir(s)   2,241,265,664 bytes free
  

Я был бы признателен за любую помощь или предложение.

Спасибо.

Комментарии:

1. adder.o Действительно ли это зависит от half_adder.cpp ? Если adder.cpp включает только half_adder.h файл, то cpp-файл в правиле не нужен.

2. Да, adder.cpp полагается на функции, реализованные в half_adder.cpp . Я удалю файл .cpp из правила, как вы предложили. Спасибо!

Ответ №1:

 aufgabe4.out : half_adder.o, adder.o, program.o
  

Уберите запятые.

 aufgabe4.out : half_adder.o adder.o program.o
  

Ответ №2:

Удалите «,» из первой строки makefile.

Ответ №3:

Первая строка вашего Makefile написана плохо. Измените его на это:

 aufgabe4.out : half_adder.o adder.o program.o
  

Вы не можете использовать запятую для разделения целей. Используйте только пробелы.

Ответ №4:

Ваш make, вероятно, является GNU make, вы могли бы отладить его с помощью make --debug=b