2017-01-27 2 views
1

Я выполнил инструкции от MinGW-64-bit, используя вариант A: постройте Qt в MSYS2-shell & MinGW-w64 Win64 Shell.Строительство Qt для источника с MSYS2/MinGW 64 - заголовки ICU не найдены

Я загрузил исходный код

git clone https://code.qt.io/qt/qt5.git 
cd qt5 
perl init-repository 
git checkout 5.8 

После установки всех необходимых компонентов я построить OpenSSL и СИС - установленный в

  • /USR/местные/OpenSSL
  • /USR/местные/СИС

Но оттуда инструкции не столь ясны. Утверждается, что для установки некоторых переменных среды используется командная оболочка Windows. Но позже я использую MSYS2 64-битную оболочку, поэтому они не имеют никакого эффекта. Вот что я сделал:

export INCLUDE=/usr/local/icu/include:/usr/local/openssl/include 
export LIB=/usr/local/icu/lib:/usr/local/openssl/lib 
export QMAKESPEC= 
export QTDIR= 
windows2unix() { local pathPcs=() split pathTmp IFS=\;; read -ra split <<< "$*"; for pathTmp in "${split[@],}"; do pathPcs+=("/${pathTmp//+([:\\])//}"); done; echo "${pathPcs[*]}"; }; systemrootP=$(windows2unix "$SYSTEMROOT"); export PATH="$PWD/qtbase/bin:$PWD/gnuwin32/bin:/c/msys64/mingw64/bin:/c/msys64/usr/bin:/c/msys64/usr/local/icu/lib" 
export MAKE_COMMAND= 

mkdir qt-build 
cd qt-build 

../qt5/configure -prefix /opt/qt -debug-and-release -opensource -confirm-license -platform win32-g++ -developer-build -icu -I /usr/local/icu/include -opengl desktop -openssl -plugin-sql-odbc -nomake examples -nomake tests 

настроечный скрипт останавливается со следующей ошибкой:

ERROR: Feature 'icu' was enabled, but the pre-condition 'libs.icu' failed. 

В config.log Qt, я нашел:

looking for library 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 C:\msys64\home\asp\qt-build\qtbase\config.tests\unix\icu && C:\msys64\home\asp\qt-build\qtbase\bin\qmake.exe "CONFIG -= qt debug_and_release app_bundle lib_bundle" "CONFIG += shared console" "LIBS += -licuin -licuuc -licudt" C:/msys64/home/asp/qt5/qtbase/config.tests/unix/icu 
+ cd C:\msys64\home\asp\qt-build\qtbase\config.tests\unix\icu && set MAKEFLAGS=& C:/msys64/usr/bin/make 
> g++ -c -pipe -fno-keep-inline-dllexport -g -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -IC:/msys64/home/asp/qt5/qtbase/config.tests/unix/icu -I. -IC:/msys64/home/asp/qt5/qtbase/mkspecs/win32-g++ -o icu.o C:/msys64/home/asp/qt5/qtbase/config.tests/unix/icu/icu.cpp 
> C:/msys64/home/asp/qt5/qtbase/config.tests/unix/icu/icu.cpp:40:28: fatal error: unicode/utypes.h: No such file or directory 
> #include <unicode/utypes.h> 
>       ^
> compilation terminated. 
> make: *** [Makefile:155: icu.o] Fehler 1 
=> source failed verification. 
Trying source 2 (type inline) of library icu ... 
=> source failed condition '!config.win32'. 
test config.corelib.libraries.icu FAILED 

Почему не сценарий найти входящие? Я поставил их как

  • параметр '-I/USR/местные/ICU/включают'
  • экспорт INCLUDE =/USR/местные/СИС/включают в себя:/USR/местные/OpenSSL/включить

Я также попытался

  • параметр '-I/C/msys64/USR/местные/СИС/включают'
  • экспорт INCLUDE =/C/msys64/USR/местные/СИС/включают:/C/msys64/usr/local/openssl/include

Есть ли еще одна возможность указать правильный путь INCLUDE к компилятору?

ответ

1

Наконец-то я решил эту проблему!

Я удалил полную папку qt5 и начал с самого начала. Затем я получил следующую ошибку:

looking for library 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 C:\msys64\home\asp\qt-build\qtbase\config.tests\unix\icu && C:\msys64\home\asp\qt-build\qtbase\bin\qmake.exe "CONFIG -= qt debug_and_release app_bundle lib_bundle" "CONFIG += shared console" "INCLUDEPATH += C:/msys64/usr/local/icu/include" "LIBS += -licuin -licuuc -licudt" C:/msys64/home/asp/qt5/qtbase/config.tests/unix/icu 
+ cd C:\msys64\home\asp\qt-build\qtbase\config.tests\unix\icu && set MAKEFLAGS=& C:/msys64/usr/bin/make clean && set MAKEFLAGS=& C:/msys64/usr/bin/make 
> rm -f icu.o 
> g++ -c -pipe -fno-keep-inline-dllexport -g -Wall -Wextra -fexceptions -mthreads -DUNICODE -IC:/msys64/home/asp/qt5/qtbase/config.tests/unix/icu -I. -IC:/msys64/usr/local/icu/include -IC:/msys64/home/asp/qt5/qtbase/mkspecs/win32-g++ -o icu.o C:/msys64/home/asp/qt5/qtbase/config.tests/unix/icu/icu.cpp 
> g++ -Wl,-subsystem,console -mthreads -o icu.exe icu.o -licuin -licuuc -licudt 
> C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -licuin 
> C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -licuuc 
> C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -licudt 
> collect2.exe: error: ld returned 1 exit status 
> make: *** [Makefile:62: icu.exe] Fehler 1 
=> source failed verification. 
Trying source 2 (type inline) of library icu ... 
    => source failed condition '!config.win32'. 
test config.corelib.libraries.icu FAILED 

Таким образом, заголовки можно найти на этот раз! Но теперь ICU lib не удалось связать. Поэтому я добавил '-L/C/msys64/USR/местные/СИС/Библиотека' и попробовал еще раз:

../qt5/configure -prefix /opt/qt -debug-and-release -opensource -confirm-license -platform win32-g++ -developer-build -icu -I /C/msys64/usr/local/icu/include -L /C/msys64/usr/local/icu/lib -opengl desktop -openssl -plugin-sql-odbc -nomake examples -nomake tests 

Qt is now configured for building. Just run 'make'. 
Once everything is built, you must run 'make install'. 
Qt will be installed into 'C:\msys64\opt\qt' 
+0

мелочью, но 'C:/msys64/USR/local' является плохим выбором для mingw- w64, вам лучше использовать 'C:/msys64/mingw64/local' или' C:/msys64/mingw32/local'. –

Смежные вопросы