2017-01-27 20 views
1

MinGW-64-bit의 지침에 따라 옵션 A를 사용합니다 : MSYS2- 쉘 & MinGW-w64 Win64 Shell에서 Qt 빌드.MSYS2/MinGW 64 - ICU 헤더가없는 Qt fro 소스를 작성하십시오.

  • /usr/지방/OpenSSL을
  • /usr/지방/ICU
  • 에 설치 -

    은 내가 OpenSSL을하고 ICU를 구축 모든 필수 구성 요소를 설치 한 후 소스 코드

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

    다운로드

그러나이 지침부터 는 분명하지 않다. 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 

:

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 

왜 스크립트를하지 않습니다 : 내가 찾은 Qt의 config.log에서

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

포함 찾으세요?/usr/지방 /하려면 openssl이/ 을 포함한다 : 나는

  • 수출은 =/usr/지방/ICU가 포함/포함 '/ 포함 -I/usr/지방/ICU'

    • 매개 변수로 설정

      는 또한

    • 수출 =/C/msys64/usr/지방/ICU이 포함/포함 '/ C/msys64/usr/지방/ICU이 포함/-I'

      • 파라미터 시도/C/msys64/usr/local/openssl/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 라이브러리를 연결할 수 없습니다. 그래서 나는 '-L/C/msys64/usr/지방/ICU/lib 디렉토리'를 추가하고 다시 시도 :/msys64는/usr/local` mingw-에 대한 나쁜 선택 : C는`

    ../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

    사소한 점,하지만 w64 소프트웨어를 사용한다면'C :/msys64/mingw64/local' 또는'C :/msys64/mingw32/local'을 사용하는 것이 더 낫습니다. –