Я учусь, как сделать Makefile
в g ++. Я использую следующие example Коды для проекта here .Это является MakefileMakeFile в g ++. Игнорируемые команды
# Makefile for Writing Make Files Example
# *****************************************************
# Variables to control Makefile operation
CXX = g++
CXXFLAGS = -Wall -g
# ****************************************************
# Targets needed to bring the executable up to date
main: main.o Point.o Rectangle.o # ***Statement : 1
$(CXX) $(CXXFLAGS) -o main main.o Point.o Rectangle.o #Commands underneath dependencies have tabs before them
# The main.o target can be written more simply
main.o: Point.h Rectangle.h # ***Statement : 2
$(CXX) $(CXXFLAGS) -c main.cpp
Point.o: Point.h # ***Statement : 3
Rectangle.o: Rectangle.h Point.h # ***Statement : 4
Теперь у меня есть некоторые вопросы, касающиеся этого я также ссылаются конкретные строки с помощью оператора ключевое слово для облегчения допроса.
1- Насколько я понимаю, правильное утверждение 1. Когда g ++ встречает main.o (который является зависимостью для target main.o) после main: он переходит к target main.0 (утверждение 2). Затем он проверяет зависимость main.o, если зависимость (два файла заголовка найдены), тогда она запускает команду. Затем она возвращается, чтобы выполнить свою задачу для следующей зависимости и так далее?
2-зависимость для Point.o, которая является Point.h, почему не существует никакой команды как таковой
$(CXX) $(CXXFLAGS) -c Point.cpp
и аналогично для Rectangle.o, почему не существует никакой команды для ее зависимости как таковой
$ (CXX) $ (CXXFLAGS) -c Rectangle.cpp
Я был бы признателен, если бы кто-нибудь мог это прояснить.
Вы отсутствуете 'xxx.cpp' в зависимости для' xxx.o' ... – PiotrNycz
@PiotrNycz Моей версии GNU Make (3.81) implicitl y добавляет эту зависимость. – juanchopanza