Makefile: нет правил для создания цели (автоматические переменные) - PullRequest
0 голосов
/ 24 августа 2011

У меня проблемы с моим make-файлом, я читал некоторые уроки о том, как сделать более многократно используемый make-файл, но я столкнулся с этой ошибкой, и я уже некоторое время искал, особенно в руководстве по GNU make. и здесь.

Вот мой make-файл:

SRC_DIR=./src
BUILD_DIR=./build
OBJS= $(BUILD_DIR)/main.o $(BUILD_DIR)/hamming.o

$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c $(SRC_DIR)/%.h
    $(CC) -c $< $(CFLAGS) -o $@

$(BUILD_DIR)/main: $(OBJS)
    $(CC) -o $@ $^ $(CFLAGS)

У меня ошибка:

make: нет правила для создания цели build/main.o', needed by build / main '. Стоп.

Мне кажется, что объекты в переменной OBJS не связаны с правилом шаблона% .o, но я не знаю почему.

В моем рабочем каталоге есть: мой make-файл и два каталога 'src' и 'build'.

Спасибо.

Ответы [ 2 ]

1 голос
/ 24 августа 2011

Я пойду на конечности и угадаю, что src/main.h нет. Если это так, вы можете исправить это так:

$(BUILD_DIR)/hamming.o: $(BUILD_DIR)/%.o : $(SRC_DIR)/%.h

$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c
    $(CC) -c $< $(CFLAGS) -o $@

EDIT:
Теперь я озадачен. Пожалуйста, попробуйте это (это грубо, но если это работает, мы можем уточнить):

SRC_DIR=./src
BUILD_DIR=./build
OBJS= $(BUILD_DIR)/main.o $(BUILD_DIR)/hamming.o

$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c $(SRC_DIR)/%.h
    $(CC) -c $< $(CFLAGS) -o $@

$(BUILD_DIR)/main.o: $(SRC_DIR)/main.c
    $(CC) -c $< $(CFLAGS) -o $@

$(BUILD_DIR)/main: $(OBJS)
    $(CC) -o $@ $^ $(CFLAGS)
0 голосов
/ 24 августа 2011

Вот небольшая документация, которую я собрал для NMake некоторое время назад, я надеюсь, что это поможет. Вы уверены, что перед командами есть только вкладки? Вы не можете иметь пробелы, которые являются ошибкой номер один, которую я видел в прошлом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...