Detection of icu libs fails with VS2017
Unsolved
Installation and Deployment
-
I'm building Qt 5.11.1 from sources with VS2017 build tools. The environment I set is as follows:
set QTDIR=%CD% set PATH=%PATH%;%QTDIR%\qtbase\bin;C:\Oracle11\client11.2.0\bin;C:\Python27\;C:\ruby_2.0.0\bin;C:\Python27\Scripts\;C:\Perl64\site\bin;C:\Perl64\bin;C:\GnuWin32\bin;C:\icu\bin64 call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\Build\vcvars64.bat" set INCLUDE=%INCLUDE%;C:\app\client\x\product\12.2.0\client_1\oci\include;C:\Python27\include;C:\ruby_2.0.0\include;"C:\mysql-5.5\include;C:\icu\include";"C:\Program Files (x86)\Windows Kits\10\Include" set LIB=%LIB%;C:\app\client\x\product\12.2.0\client_1\oci\lib\msvc;C:\Python27\Lib;C:\ruby_2.0.0\lib;"C:\mysql-5.5\lib";C:\icu\lib64;"C:\Program Files (x86)\Windows Kits\10\Lib"
then call the
configure
script:configure -prefix %QTDIR%\_STAGE -platform win32-msvc -commercial -confirm-license -release -shared -qt-libjpeg -qt-libpng -no-cups -no-mtdev -nomake examples -icu -plugin-sql-mysql -plugin-sql-odbc -plugin-sql-sqlite -opengl dynamic -skip qtconnectivity -skip webengine -D _IGNORE_FINAL
The script does some work, and when checking the configurations, it fails - cannot find
icu
:ERROR: Feature 'icu' was enabled, but the pre-condition 'libs.icu' failed. Check config.log for details.
Here's the relevant part from
config.log
:loaded result for library config.qtbase_corelib.libraries.icu Trying source 0 (type inline) of library icu ... => source failed condition 'config.win32 && !features.shared'. Trying source 1 (type inline) of library icu ... + cd /d C:\Users\x\Documents\qt\config.tests\icu && C:\Users\x\Documents\qt\qtbase\bin\qmake.exe "CONFIG -= qt debug_and_release app_bundle lib_bundle" "CONFIG += shared warn_off console single_arch" "DEFINES += _IGNORE_FINAL" "LIBS += -licuin -licuuc -licudt" C:/Users/x/Documents/qt/config.tests/icu + cd /d C:\Users\x\Documents\qt\config.tests\icu && set MAKEFLAGS=& nmake > Microsoft (R) Program Maintenance Utility Version 14.15.26726.0 > Copyright (C) Microsoft Corporation. All rights reserved. > cl -c -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -O2 -MD -W0 -EHsc -DUNICODE -D_UNICODE -DWIN32 -DWIN64 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -D_IGNORE_FINAL -DNDEBUG -I. -IC:\Users\x\Documents\qt\qtbase\mkspecs\win32-msvc -Fo @C:\Users\x\AppData\Local\Temp\8\nm8F4F.tmp > main.cpp > link /NOLOGO /DYNAMICBASE /NXCOMPAT /INCREMENTAL:NO /SUBSYSTEM:CONSOLE "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /MANIFEST:embed /OUT:icu.exe @C:\Users\x\AppData\Local\Temp\8\nm91F0.tmp > main.obj : error LNK2019: unresolved external symbol ucol_open_57 referenced in function main > main.obj : error LNK2019: unresolved external symbol ucol_close_57 referenced in function main > icu.exe : fatal error LNK1120: 2 unresolved externals > NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.15.26726\bin\HostX64\x64\link.EXE"' : return code '0x460' > Stop.
I tried to build the standalone
main.cpp
fromconfig.tests\icu
withcl main.cpp /EHsc
and got the same linker error. Then I added the libs path and the libs and the build succeeded:
cl main.cpp /EHsc /link /LIBPATH:C:\icu\lib64 icudt.lib icuin.lib icuio.lib icule.lib iculx.lib icutu.lib icuuc.lib
But when I added the libs to
configure
script, got the same linker error.Any idea what I'm doing wrong or missing?