Создает ли Make правила для зависимостей, если они недоступны? - PullRequest
0 голосов
/ 17 октября 2019

Приведенный ниже make-файл не имеет цели для создания OBJECTS, но, тем не менее, make формирует правило, создает OBJECTS и делает финальный файл all.exe. Я не уверен, как это работает. Есть ли в make механизм создания правил, если они не доступны в make-файле для зависимостей?

SOURCE=$(wildcard Source/\*.cpp)
TEST=$(wildcard Source/Tests/\*.cpp)
OBJECTS=$(SOURCE:.cpp=.o) $(TEST:.cpp=.o)
CXXFLAGS= -O3 -fstack-usage -MMD

all:$(OBJECTS)
    g++ $(CXXFLAGS) -o $@ $(OBJECTS)

print::
    @echo $(SOURCE)
    @echo $(OBJECTS)
    @echo $(TEST)

clean:
    rm -rf Source/*.o Source/Tests/*.o *.exe

Вывод на консоль:

$ make
g++ -O3 -fstack-usage -MMD   -c -o Source/main.o Source/main.cpp
g++ -O3 -fstack-usage -MMD   -c -o Source/Tests/TestList.o Source/Tests/TestList.cpp
g++ -O3 -fstack-usage -MMD   -c -o Source/Tests/TestLinkedlist.o Source/Tests/TestLinkedlist.cpp
g++ -O3 -fstack-usage -MMD -o all Source/main.o Source/Tests/TestList.o Source/Tests/TestLinkedlist.o

Структура папки:

1 Ответ

1 голос
/ 17 октября 2019

Да, GNU make имеет полный набор встроенных правил.

См. Руководство: https://www.gnu.org/software/make/manual/html_node/Catalogue-of-Rules.html

...