Несомненно, это может сработать. Make обрабатывает все как файл, включая символическую ссылку. Он проверяет, существует ли файл (поскольку вы не указываете какие-либо предварительные условия, сопоставление временной отметки отсутствует). В случае символической ссылки он действительно проверяет, на что указывает ссылка, конечно, не сама ссылка.
Вы не показываете, что происходит, когда вы делаете это, но на основе вашего описания происходит одна из двух вещей: либо (a) каталог contrib/openlayers не существует, поэтому команда ln генерирует ошибку, а не создание символической ссылки, поэтому, конечно, попытка будет пытаться воссоздать ее в следующий раз, когда она будет запущена, или (б) ваша символическая ссылка создается некорректно и ничего не указывает, а значит, когда make пытается увидеть, существует ли она, она терпит неудачу и делает попытку воссоздайте его.
Если, например, ваш каталог src
является родным братом вашего каталога contrib
, то ваши символические ссылки являются неправильными; вы получите:
contrib/openlayers/theme -> src/openlayers/theme
Или, когда ядро пытается разрешить его:
contrib/openlayers/src/openlayers/theme
Это очень маловероятно, что это то, что вы хотите. Я предлагаю вам использовать что-то вроде этого:
contrib/openlayers/theme:
mkdir -p contrib/openlayers
ln -s ../../src/openlayers/theme contrib/openlayers/theme
Затем убедитесь, что символическая, после создания, на самом деле указывает, где вы хотите пойти.
Вы правы, символические ссылки были сломаны. –