Согласно тому, что я прочитал о make-файлах, фальшивой целью является любая цель, которая не соответствует реальному имени файла.Моя интуиция говорит, что каталог в качестве цели будет рассматриваться так же, как файл.
Почему это важно?У меня есть каталог в качестве цели в моем make-файле.когда у меня есть это в качестве предпосылки для моего основного исполняемого файла, этот исполняемый файл всегда создается независимо от того, все ли обновлено.Если я возьму это в качестве предварительного условия, мой make-файл достаточно умен, чтобы знать, когда что-то должно быть построено, но у меня есть проблема, не зная, нужно ли создавать каталог.Согласно тому, что я читал о make, любые фальшивые цели не являются необходимыми предварительными условиями, потому что make не знает, обновлены ли они, поэтому они всегда будут перестраивать связанную цель.Вот выдержка из моего make-файла.
$(EXEC_WITH_PATH): ${OBJ_DIR} $(DPEND) $(OBJS)
@echo "--------------------------------------------";
@echo "$(THIS_DIR) $(MACHINE)";
@echo "Linking Shared Library";
@echo "ar -rc $(EXEC_WITH_PATH) INSERT::{OBJS}";
ar -rc $(EXEC_WITH_PATH) $(OBJS);
@echo "--------------------------------------------";
# Make dirs for object code and links
${OBJ_DIR} :
@if [ ! -d ${OBJ_DIR} ]; then \
mkdir ${OBJ_DIR}; \
fi;
Итак, в этом случае ${OBJ_DIR}
- это имя каталога, фальшивая цель или нет?