我需要在Windows 10上使用qt-everywhere-src-5.12.1.tar.xz作为源代码构建静态QT 5.12.1库
这就是我设置构建环境的方式:
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
配置完成后,我运行“job”并得到多个未解析的外部
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)
我该如何解决这些问题?
我们能够在另一台PC上成功构建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