Qt .pro, преобразованный в nmake Makefiles, не может обрабатывать staticlibs, то же самое в решении VS2008 работает - PullRequest
0 голосов
/ 10 марта 2010

У меня есть среда сборки, основанная на файлах Qt .pro, преобразованных как в решения Visual Studio 2008, так и в файлы Makefile (используемые nmake). Существует около 30 проектов, до недавнего времени все они были собраны в отдельный dll (и основной в exe).

Недавно я добавил проект, настроенный как статическая библиотека. Visual Studio связывает все просто отлично. У nmake есть неразрешенные внешние символы для каждого символа, используемого в этой статической библиотеке.

Последовательность проекта в Makefile в порядке Зависимости Qt в порядке

используется: Visual Studio 2008 Интеграция Qt Visual Studio 1.4.3 Qt 4.5.2

Есть предложения? Все объединенные журналы или любой их полезный выбор слишком велики для публикации.

1 Ответ

0 голосов
/ 11 марта 2010

При разборе переменной 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 умеет так ссылаться.

...