Makefile с макросом, не генерирует исполняемый файл - PullRequest
2 голосов
/ 08 августа 2011

Я написал Makefile (код ниже) для моей программы, который содержит hello.h, hello.cpp и main.cpp (это тривиальный тестовый стенд для hello.cpp).

Однако, после того, как я набрал в терминале команду make, она сообщает мне

make: `hello.o 'обновлен.

Может кто-нибудь дать какие-нибудь подсказки?Спасибо!

#MACRO
CAT_HOME = $(MGC_HOME)
TARGET = my_tb
#OBJECT1 = hello.o
OBJECTS = hello.o main.o
#OBJECT2 = main.o
DEPENDS = hello.cpp main.cpp hello.h
INCLUDES = -I"$(CAT_HOME)/shared/include"
DEFINES =
CXX = /usr/bin/g++
CXXFLAGS = -g -O3 $(DEFINES) $(INCLUDES)

$(TARGETS) : $(OBJECTS)
    $(CXX) $(CXXFLAGS) -o $(TARGET) $(OBJECTS)

$(OBJECTS) : $(DEPENDS)

#phony target to remove all objects and executables
.PHONY: clean
clean:
    rm -f *.o

1 Ответ

2 голосов
/ 08 августа 2011

Вы определяете переменную TARGET, но позже попытаетесь использовать $(TARGETS).Разница S в разнице.

Кроме того, неэффективно, чтобы каждый файл .o зависел от каждого .cpp файла.Вы могли бы также просто написать линейный скрипт, который перекомпилирует все безоговорочно.Поскольку вы используете встроенное правило make для создания .o из соответствующего .cpp, вам не нужно явно объявлять эту зависимость.Таким образом, вы можете удалить все файлы .cpp из DEPENDS без потери соответствующих зависимостей.

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