Неразрешенный внешний при построении статического qt - PullRequest
0 голосов
/ 12 марта 2019

Мне нужно собрать статические библиотеки QT 5.12.1 в Windows 10, используя qt -where-src-5.12.1.tar.xz в качестве источника

Вот как я настраиваю свою среду сборки:

CALL "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\Build\vcvarsall.bat" amd64
SET _ROOT=C:\Dev\Qt\Qt5.12.1
SET PATH=%_ROOT%\qtbase\bin;%_ROOT%\gnuwin32\bin;%PATH%
set path="%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64\cl.exe";%PATH%
REM Uncomment the below line when using a git checkout of the source repository
REM SET PATH=%_ROOT%\qtrepotools\bin;%PATH%
SET _ROOT=

Моя конфигурация сборки QT выглядит следующим образом:

configure -prefix C:\Dev\QT_Libs -static -static-runtime -opengl desktop -debug-and-release -mp -nomake examples -nomake tests -nomake tools -skip qtwebengine -opensource -platform win32-msvc -confirm-license

И после того, как конфигурация завершена, я запускаю "jom" и получаю несколько неразрешенных внешних элементов

recognizer.obj : error LNK2001: unresolved external symbol "public: static struct QArrayData const * const QArrayData::shared_null" (?shared_null@QArrayData@@2QBU1@B)
compress.obj : error LNK2001: unresolved external symbol "public: static struct QArrayData const * const QArrayData::shared_null" (?shared_null@QArrayData@@2QBU1@B)
cppgenerator.obj : error LNK2001: unresolved external symbol "public: static struct QArrayData const * const QArrayData::shared_null" (?shared_null@QArrayData@@2QBU1@B)
lalr.obj : error LNK2001: unresolved external symbol "public: static struct QArrayData const * const QArrayData::shared_null" (?shared_null@QArrayData@@2QBU1@B)
main.obj : error LNK2001: unresolved external symbol "public: static struct QArrayData const * const QArrayData::shared_null" (?shared_null@QArrayData@@2QBU1@B)
cppgenerator.obj : error LNK2001: unresolved external symbol "public: static struct QMapDataBase const QMapDataBase::shared_null" (?shared_null@QMapDataBase@@2U1@B)
dotgraph.obj : error LNK2001: unresolved external symbol "public: static struct QMapDataBase const QMapDataBase::shared_null" (?shared_null@QMapDataBase@@2U1@B)
lalr.obj : error LNK2001: unresolved external symbol "public: static struct QMapDataBase const QMapDataBase::shared_null" (?shared_null@QMapDataBase@@2U1@B)
parsetable.obj : error LNK2001: unresolved external symbol "public: static struct QMapDataBase const QMapDataBase::shared_null" (?shared_null@QMapDataBase@@2U1@B)
lalr.obj : error LNK2001: unresolved external symbol "public: static struct QListData::Data const QListData::shared_null" (?shared_null@QListData@@2UData@1@B)
main.obj : error LNK2001: unresolved external symbol "public: static struct QListData::Data const QListData::shared_null" (?shared_null@QListData@@2UData@1@B)
lalr.obj : error LNK2001: unresolved external symbol "public: static struct QLinkedListData const QLinkedListData::shared_null" (?shared_null@QLinkedListData@@2U1@B)

Как можноЯ их чиню?

1 Ответ

0 голосов
/ 27 марта 2019

Мы смогли успешно собрать QT на другом компьютере, используя следующую команду для конфигурации:

REM Set up \Microsoft Visual Studio 2017, where <arch> is \c amd64, \c x86, etc.
CALL "c:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x86
SET _ROOT=d:\qt\source
SET PATH=%_ROOT%\qtbase\bin;%_ROOT%\gnuwin32\bin;%PATH%
REM Uncomment the below line when using a git checkout of the source repository
REM SET PATH=%_ROOT%\qtrepotools\bin;%PATH%
SET _ROOT=

..\source\configure.bat -no-angle -debug-and-release -opengl desktop -platform win32-msvc -skip qttranslations -skip qttranslations -prefix "d:\qt\bin" -opensource -confirm-license -nomake tests -nomake examples -static -static-runtime
jom -j 12
jom install
...