2012-03-03 2 views
9

64 비트 Windows 용 Qt 라이브러리 (데모 또는 예제가 필요 없음)를 컴파일하려고합니다. here 지침이 있지만 아래 주석에 설명 된 오류가 발생합니다. 이 프로세스를 수행하는 방법에 대한 참조가없는 것 같습니다.Visual C++ 2010 Express로 32 비트 환경에서 64 비트 Windows 용 Qt를 컴파일하는 방법은 무엇입니까?

Microsoft Visual C++ 2010 Express를 대상으로합니다. Perl과 Windows SDK가 필요한 것처럼 보입니다.이 프로세스를 어떻게 수행합니까?

답변

14

이 과정은 상당히 지루하고 시간이 오래 걸리지 만 앞으로는 Qt를 컴파일하려고하는 다른 사람들을 위해 각 단계를 자세히 설명 할 것입니다.

  1. 첫 번째 단계는 모든 필수 구성 요소를 설치하는 것입니다.

    • ActivePerl이며 구성 과정에서 사용됩니다. Perl을 설치 한 후 환경 변수를 수정하기 때문에 다시 시작해야합니다.
    • Windows SDK 7.1 (이전의 플랫폼 SDK). 설치할 구성 요소를 선택할 때 x64 라이브러리를 포함시켜야합니다.

  2. Qt Downloads page에서 Qt는 소스 아카이브를 다운로드합니다.

  3. 기억 파일의 내용을 기억하기 쉬운 위치 (예 : C:\)로 추출하십시오. 나중에이 위치를 사용하여 일부 환경 변수를 설정하기 때문에이 위치를 기억해야합니다.

  4. 이제 Windows SDK 7.1 명령 프롬프트를 엽니 다. (아래 예제는 C:\에 압축 가정)

    setenv /release /x86 
    
  5. 설정 다음과 같은 환경 변수를 (우리는 32 비트 응용 프로그램으로 몇 가지 도구를 구축 할 필요) 32 비트 릴리스 모드로 환경을 설정하여 시작합니다 :

    set QTDIR=C:\qt-everywhere-opensource-src-4.8.0 
    set PATH=%PATH%;%QTDIR%\bin 
    
  6. 지금 cd %QTDIR%를 실행하고 구성 옵션을 지정 - 예를 아래에 포함되어

    configure -release -opensource -qt-zlib -qt-libpng -qt-libmng -qt-libtiff 
    -qt-libjpeg -qt-style-windowsxp -qt-style-windowsvista -platform 
    win32-msvc2010 
    
  7. 구성 프로세스가 완료 cdsrc 디렉토리에 실행되면 :

    qmake 
    nmake 
    

    상당한 시간이 걸릴 수 있습니다이 과정은, 이제 휴식을 취하고 여기에 몇 가지 질문에 대답 할 수있는 좋은 시간이 될 것입니다 on Stack Overflow :)

  8. 이제 도구가 빌드되었고 Qt를 64 비트 라이브러리로 컴파일해야합니다. 다음 명령을 입력하십시오.

    setenv /x64 
    

    5 단계의 환경 변수를 다시 설정해야합니다. 이제 해당 명령을 입력하십시오.그것은 우리가 qmake.exe 프로그램의 컴파일을 건너 뛸 것을 나타냅니다 -

     
    configure -release -opensource -qt-zlib -qt-libpng -qt-libmng -qt-libtiff 
    -qt-libjpeg -qt-style-windowsxp -qt-style-windowsvista -platform 
    win32-msvc2010 -no-qmake 
    

    -no-qmake 옵션은 매우 중요 : 다음

  9. 실행 cd %QTDIR% 및 하나 개의 추가 옵션을 지정 이 확인되는 configure 명령을 다시 실행 왜냐하면 우리는 32 비트 버전을 유지하기를 원하기 때문입니다.

  10. 이제 몇 가지 종속성 문제로 인해 상황이 실제로 복잡해집니다. Qt가 코어 라이브러리를 빌드하는 데 필요한 도구 (예 : moc)와 다른 구성 요소 중 일부는 src.pro 파일에 종속성으로 나열됩니다. 즉, 컴파일러가 64 비트 응용 프로그램으로 빌드 한 다음 실행하려고 시도합니다. 물론 32 비트 시스템에서는 실패합니다. 그래서 우리가해야 할 일은 src.pro을 편집하고 그 의존성을 스스로 제거하는 것입니다. 라인 85 근처에서 아래로 스크롤로 시작하는 행을 찾습니다

    !wince*:!ordered:!symbian-abld:!symbian-sbsv2 { 
    

    섹션의 각 후속 라인은 서브 타겟과의 종속성을 보여줍니다. 이제 수행하려는 작업은 src_tools_으로 시작하는 모든 종속성을 제거하는 것입니다. 예를 들어 :

    src_gui.depends = src_corelib 
    

    이 일을 더 나은 방법이있을 수 있습니다,하지만 난 아직 파악되지 않은 :

  11. 이제 우리 cd을로 :

    src_gui.depends = src_corelib src_tools_uic 
    

    이된다 src 디렉토리를 다시 한 번 실행하여 다음 명령을 실행하십시오.

    nmake sub-winmain sub-corelib sub-xml sub-network sub-sql sub-testlib 
    sub-gui sub-qt3support sub-activeqt sub-opengl sub-xmlpatterns sub-phonon 
    sub-multimedia sub-svg sub-script sub-declarative sub-webkit 
    sub-scripttools sub-plugins sub-imports 
    

    이것은 Qt 라이브러리 만 빌드하고 도구 종속성을 건너 뜁니다. 이것 역시 상당한 시간이 걸릴 수 있습니다.

  12. 이제는 64 비트 Qt 응용 프로그램에서 연결할 수있는 lib 폴더에 64 비트 라이브러리가 있어야합니다.


편집 :QtWebKit4.dll 라이브러리 (해결되지 않은 문자에 대해 뭔가를) 연결할 때 난 아직도 몇 가지 문제로 실행 이후에도이 것만으로는 충분하지 않았다 것으로 나타났다. someone else has already found the solution이 표시되고 QMAKE_HOST.archQMAKE_TARGET.arch, WebCore.pro으로 변경해야합니다.

또한 위 옵션은 OpenSSL을 지원하지 않는 QNetwork4.dll을 구축합니다 (QWebView에서도 HTTPS를 통해 사이트에 액세스 할 수 없음). 고맙게도 고칠 수는 없습니다. 다운로드 및 Win64를위한 OpenSSL을 구축하고 단계 # 9 명령에 아래 옵션을 추가 :

-openssl -I C:\OpenSSL\inc32 -L C:\OpenSSL\out32dll 

(당신이 C:\OpenSSL 이외에서 OpenSSL 곳을 설치 한 경우이 경로를 변경해야합니다.)

는 는 는 또한 편집


:
, 나는 여기에 컴파일 된 라이브러리를 업로드 한 자신을이 일의 어려움을 저장 : 나는 조지 에디슨의 대답에 코멘트에서 언급 한 바와 같이
http://www.box.com/s/9710cbb278ef4890a7b5

+1

와 아직 앱 개발이 만병 통치약처럼 사람들이 여전히 아름답고 간단하고 쉬운 * 있다고, Qt는 이야기 *. 나는 이것에 대한 증거를 아직 보지 못했다. 내가 작업을 시도했을 때, 필자가 결론을 내린 것은 단지 가치가 없다는 것입니다. 특히 일단 당신이 끝나면 완전히 네이티브 어플리케이션이 없다는 것을 고려하면됩니다. –

+0

@CodyGray : 완전히 동의하지 않습니다. 왜 그렇게 많은 어려움을 겪으시겠습니까? –

+0

@GeorgeEdison : 컴파일 된 64 비트 바이너리로 Qt 응용 프로그램을 컴파일하고 있지만 응용 프로그램이 충돌합니다. 이 사실은 내가 QTableView를 사용했다는 사실과 관련이 있다고 생각합니다. QTableView는 MS Visual C++ 컴파일러의 버그로 인해 충돌합니다. https://bugreports.qt-project.org/browse/QTBUG-19175 및 https : //bugreports.qt-project.org//browse/QTBUG-11445. MSVC SP 1을 사용하여 바이너리를 컴파일 했습니까? 저는 지금 64 비트 컴파일을하고 있습니다 만, 업로드 된 컴파일 된 라이브러리가 다른 사람들에게 유용 할 것이므로 버그가 없다는 것이 중요하기 때문에 이것을 묻습니다. – yyzz

1

,이 Windows SDK 7.1과 함께 제공되는 Microsoft Visual C++ 컴파일러의 버그. 자세한 내용은 QTBUG-11445QTBUG-19175을 참조하십시오.

OpenSSH 라이브러리를 포함하여 George의 지침에 따라 Qt 4.8.2 64 비트 바이너리를 컴파일했습니다. 또한 Microsoft's hotfix을 적용하여 컴파일러 버그를 수정했습니다. 여러분의 편의를 위해

, 여기에서 다운로드에 대한 결과 64 비트 라이브러리가 제공 한 : https://www.box.com/s/8948c60c3cdd743ef83b

+0

나도 동일한 호환성 문제를 겪었고 SDK 7.0을 설치하고이 방법을 추천하고 http://qtitkvtkhelp.blogspot.in/2013/04/qt-64-bit-build.html을 참조하십시오. –

관련 문제