Почему команда GNU make& #39;s vpath такая слабая?

Я оптимизировал make-файл очень большого проекта и обнаружил, что GNU make vpathКоманда может выполнять очень ограниченную работу. Например,:

vpath %.o $(OBJPATH)

означает поиск всех объектных файлов в значении пути по OBJPATH. Это означает, что /dir1/../dir2/obj1.oи /dir3/../dir2/obj1.oявляются одним и тем же файлом, но, если я уже сделал /dir1/../dir2/obj1.o, когда инструменты думают правила для /dir3/../dir2/obj1.o, он все равно не может его найти и должен переделать /dir3/../dir2/obj1.o, даже если это тот же файл, что и /dir1/../dir2/obj1.o.

Я проверил исходный код GNU make; он использует хеш-таблицу для сравнения строк пути к файлу, поэтому, если строки разные, хотя они обозначают один и тот же файл, их все равно нельзя сопоставить с помощью vpath.

Почему бы не реализовать vpathболее мощные возможности?

0
задан Jonathan Leffler 27 April 2012 в 16:48
поделиться