Сообщение типа "make: 'target' обновлено." означает, что make
решил, что ему не нужно запускать какие-либо команды, основываясь на временных метках файлов. Программа make
считает, что файлы (и фальшивые цели) имеют дерево предварительных условий, и команды, связанные с созданием файла, будут выполняться, только если файл не существует или имеет более старую временную метку, чем одна из его предпосылок. В больших проектах это помогает избежать полной перестройки всего, что может занять много времени, когда фактически изменилось только несколько исходных файлов: make
определит, какие команды действительно необходимы. Но для этого необходимо настроить Makefile
с точными предпосылками.
Ваш Makefile
указывает, что файл findName
имеет одну предпосылку: findName.cpp
. Если make
успешно создает findName
, то вы ничего не делаете, а просто набираете make
еще раз, вы увидите сообщение «актуально»: это функция. Если вы редактируете и сохраняете findName.cpp
, а затем запускаете make
, он должен повторить команду g++
.
Но предположим, что у вас также есть некоторые заголовочные файлы из findName.cpp
, скажем findName.h
. Если вы отредактируете и сохраните findName.h
, а затем запустите make
, вы получите «обновление», поскольку make
не знал, что findName.h
влияет на findName
. Чтобы исправить это, необходимо добавить обязательное условие:
findName: findName.cpp findName.h
g++ -g findName.cpp -o findName
Существуют различные способы автоматического обращения с такими зависимостями заголовка, но они получают более расширенное использование make
и / или использование других инструменты для сборки.