Makefile, анонимная команда rm выполнена наконец

Необходимая полоса Makefile выглядит следующим образом

PCS=$(wildcard $(PC)/*.pc)
SRCS=$(PCS:$(PC)/%.pc=$(SRC)/%.cpp)
OBJS=$(SRCS:$(SRC)/%.cpp=$(OBJ)/%.o)

f2db : $(OBJS)
    $(CC) $(INCS) $(LIBS) $(FLAGS) $(OBJS) f2db.cpp -o $@

$(OBJ)/%.o : $(SRC)/%.cpp
    $(CC) $(INCS) $(FLAGS) -c $< -o $@

$(SRC)/%.cpp : $(PC)/%.pc
    $(PROC) $< CODE=CPP CPP_SUFFIX=cpp INCLUDE=inc INCLUDE=/usr/include
    mv $(PC)/*.cpp $(SRC)

При вызове команды gmake все выполняется так, как ожидалось, за исключением, наконец, команды удаления. Последние две строки выводятся следующим образом

gmake: warning:  Clock skew detected.  Your build may be incomplete.
rm src/fileName.cpp

Инструмент, используемый GNU Make 3.80 в ОС Solaris, почему это происходит?

1 ответ

Решение

Предупреждение о перекосе часов наиболее вероятно, потому что каталог, в который вы встраиваете, монтируется из удаленной системы, используя что-то вроде NFS и т. Д., И часы удаленной файловой системы не синхронизируются с часами вашей локальной системы. Во всяком случае, это не связано с rm команда.

rm Команда происходит потому, что src/fileName.cpp является промежуточным файлом, и промежуточные файлы удаляются make после их сборки.

Если вы не хотите, чтобы они были удалены, просто объявите их как предварительные условия правила, чтобы они больше не были промежуточными:

f2db : $(OBJS) $(SRCS)
Другие вопросы по тегам