При разборе переменной LIBS для каждой записи -l qmake проверяет, существует ли файл в libpath. Если он может найти его, он добавляет абсолютную ссылку на Makefile, если нет, он просто добавляет имя файла и позволяет nmake искать его сам.
У меня было 2 записи: -lmystatic и -lmystatic2. Первый раз, когда я создаю свой Makefile, он пишет:
LIBS = ... mystatic.lib mystatic2.lib ...
Если я восстановлю свой Makefile, он должен написать:
LIBS = c: \ sandbox \ bin \ mystatic.lib c: \ sandbox \ bin \ mystatic2.lib
вместо этого пишет:
LIBS = c: \ sandbox \ bin \ mystatic2.lib c: \ sandbox \ bin \ mystatic2.lib
Мне кажется, что qmake берет список всех файлов, которые соответствуют «mystatic», и берет первый. К сожалению, «mystatic2.lib» также соответствует этому И «mystatic2.lib» заканчивается лексически ДО «mystatic.lib».
Интеграция с Qt Visual Studio делает то же самое. VS отфильтровывает дубликаты, но запись .lib отсутствует во включениях. Я так и не смог выяснить, почему VS умеет так ссылаться.