2015-08-23 2 views
0

Я установил VS2015 и QtCreator 3.5 и скомпилировал Qt5.5 из источника в виде бинарного дистрибутива, который недоступен для визуального компилятора C++, поставляемого с VS2015.Qbs не добавляет библиотеки Qt при связывании приложения

Я попытался скомпилировать свой проект, который был разработан с использованием визуальных компиляторов C++ из VS2012/VS2013 и QtCreator 3.3x с Qt 5.2 и Qbs - на другой машине - из QtCreator и с моей новой настройкой ни QtCreator, ни Qbs из команды line могут связывать приложение.

я сузил проблему вниз с помощью HelloWorld пример

import qbs 

CppApplication { 
    type: "application" // To suppress bundle generation on Mac 
    consoleApplication: true 
    files: "main.cpp" 

    Depends { 
     name: "Qt" 
     submodules: [ 
      "core" 
     ] 
    } 
} 

ООК, который дает следующий результат при сборке QBS из командной строки

compiling main.cpp 
linking halloqbswelt.exe 
ERROR: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\link.exe /nologo /DEBUG /PDB:halloqbswelt.pdb /OSVERSION:5.02 /SUBSYSTEM:CONSOLE,5.02 /MANIFEST /MANIFESTFILE:D:\projekte\halloqbswelt\Qt5-debug\halloqbswelt.Qt5.842abbdf\intermediate.halloqbswelt.exe.manifest D:\projekte\halloqbswelt\Qt5-debug\halloqbswelt.Qt5.842abbdf\.obj\3a52ce780950d4d9\main.cpp.obj .lib /OUT:D:\projekte\halloqbswelt\Qt5-debug\halloqbswelt.Qt5.842abbdf\intermediate.halloqbswelt.exe /LIBPATH:D:\projekte\3rd_party\qt\qtbase\lib 
LINK : fatal error LNK1104: cannot open file '.lib' 
ERROR: Process failed with exit code 1104. 
The following products could not be built for configuration Qt5-debug: 
    halloqbswelt 

Скорее загадочным, так что я выделю проблему от вышеуказанного выхода

[...] .obj\3a52ce780950d4d9\main.cpp.obj .lib /OUT: [...] 

Таким образом, пустой .lib-файл проблема.

Сравнивая оператор компоновщика с другим устройством, пустой .lib находится в том же месте, где должен находиться Qt5Core.lib. Таким образом, попытался выяснить, почему Qbs не разрешает пути более простыми; Я посмотрел на модуль core.qbs, но не смог найти ничего, что отличалось от файла на машине с рабочей настройкой. Наконец я решил перекомпилировать библиотеку Qt и настроить профили Qbs/QtCreator с нуля. Выполнено, и это сработало, пока я не перезапустил QtCreator, и теперь не работает (Qbs из командной строки, а также QtCreator со своим профилем).

Неужели кто-то испытал такое поведение?

+0

Версия Qbs is 1.4 –

+0

Я нашел что-то связанное с http://article.gmane.org/gmane.comp.lib.qt.qbs/682 Это нужно перекомпилировать Qt, поэтому, если это будет сделано, я обновлю тема. –

ответ

0

Как сказано в комментарии, http://article.gmane.org/gmane.comp.lib.qt.qbs/682 дал мне правильную отправную точку.

Qbs полагается на файлы pri/prl каждого подмодуля, из которого построены зависимости (насколько я понял). Эти pri-файлы перезаписываются или возникают другие неприятные вещи при установке Qt, созданного из источника в среде без префикса (которая по умолчанию используется под Windows) (https://bugreports.qt.io/browse/QTBUG-42959).

Так что построение Qt с префиксом и установка источников решает проблему, по крайней мере для меня.