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)