J'ai suivi les instructions de MinGW-64-bit, en utilisant l'option A: build Qt dans MSYS2-shell & MinGW-w64 Win64 Shell.Création Qt de source avec MSYS2/MinGW 64 - en-têtes ICU non trouvé
J'ai téléchargé le code source
git clone https://code.qt.io/qt/qt5.git
cd qt5
perl init-repository
git checkout 5.8
Après avoir installé toutes les conditions préalables que je construis OpenSSL et soins intensifs - installé dans
- /usr/local/OpenSSL
- /usr/local/ICU
Mais à partir de là sur les instructions ne sont pas si claires. Il est indiqué d'utiliser un shell de commande Windows pour définir certaines variables d'environnement. Mais plus tard, j'utilise le shell MSYS2 64 Bit, donc cela n'a aucun effet. Voici ce que je faisais:
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
Le script configure arrête avec l'erreur suivante:
ERROR: Feature 'icu' was enabled, but the pre-condition 'libs.icu' failed.
Dans config.log Qt J'ai trouvé:
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
Pourquoi ne pas le script trouver les inclus? Je les ai mis en
- paramètre '-I/usr/local/ICU/include'
- export Include =/usr/local/ICU/include:/usr/local/OpenSSL/include
J'ai aussi essayé
- paramètre '-I/C/msys64/usr/local/ICU/include'
- export Include =/C/msys64/usr/local/ICU/include:/C/msys64/usr/local/openssl/include
Existe-t-il une autre possibilité de donner le chemin INCLUDE correct au compilateur?
point mineur, mais 'C:/msys64/usr/local' est un mauvais choix pour mingw- Pour le logiciel w64, vous feriez mieux d'utiliser 'C:/msys64/mingw64/local' ou' C:/msys64/mingw32/local'. –