티스토리 뷰

목차

    반응형

    [크로스플랫폼 언어 Qt] Cross 컴파일 6가지 (윈도우 <-> 리눅스)


    cross compile qt 윈도우[크로스 플랫폼 언어 Qt 프로그래밍 예제]


    ※ 크로스 컴파일 작업 환경


    Windows7 64 bit

    • Visual Studio 2012, Qt Creator 2.5.2
    • Qt msvc 2012, opengl-5.3.2 (x86)


    Ubuntu 14.04 32bit

    • Qt Creator 2.5.2
    • gcc 4.8.2


    Qt는 크로스 플랫폼 환경에 어울리는 대표적인 개발 언어입니다. 제 경험상 소스 코드 자체가 100% 호환되기에 크로스 플랫폼을 타깃으로 제작되는 프로젝트라면 Qt를 선택하는 것이 좋다고 생각합니다.


    저는 윈도우7 64비트 환경과 우분투 14.04 32비트 환경을 오가며 작업했습니다. 다만, 자동으로 크로스 플랫폼 환경을 완벽하게 구현할 수 없기에 몇 가지 수정 사항이 있습니다.




    윈도우 리눅스 우분투 Qt 크로스 컴파일[크로스 플랫폼 언어 Qt 프로그래밍 예제]


    1. project.pro


    1
    DEFINES += WIN64 // 삭제
    cs


    위와 같이 프로젝트가 Windows 64비트 기반이라는 사항을 삭제해야 합니다.


    그렇지 않으면 아래 코드가 수행되며 크로스 컴파일 단계에서 에러가 발생합니다.


    1
    2
    3
    4
    5
    6
    qt_windows.h
     
    #ifndef NOMINMAX
    #  define NOMINMAX
    #endif
    #include <windows.h>
    cs


    2. 라이브러리 추가


    1
    2
    3
    #include <qframe.h> 
    #include <QGLWidget> 등 opengl 라이브러리
    #include <QTcpServer>
    cs


    위와 유사하거나 똑같은 헤더 파일을 사용한다면 아래처럼 추가합니다.


    1
    QT += widgets opengl network
    cs

    3. namespace 추가 (크로스 컴파일 선택 사항)

    헤더 파일에 UI용 namespace를 생략할 경우가 있는데 윈도우에서는 알아서 잡아주지만 우분투에선 코드를 넣어줘야 합니다.


    1
    2
    3
    namespace Ui {
        class ui_dlg_config_;
    }
    cs


    4. C++11 문법

    a. queue<shared_ptr<T>> freelist_;


    should be '> >' within a nested template argument list 에러 발생 시


    1
    CONFIG += c++11
    cs


    크로스 컴파일 Qt 플랫폼[크로스 플랫폼 언어 Qt 프로그래밍 예제]


    b. using std::shared_ptr;


    'std::shared_ptr' has not been declared 에러 발생 시 아래처럼 (gcc 4.8.2 기준)


    1
    using std::tr1::shared_ptr;
    cs


    5. 크로스 컴파일 경로 설정

    윈도우와 우분투의 컴파일 관련 경로가 다르기에 초기엔 설정해줘야 합니다. (Qt Creator의 왼쪽 메뉴 중 Projects에서 설정)

    윈도우에서의 개발 환경과 맞춰주는 편이 좋습니다..?



    [크로스 플랫폼 Qt] Cross 컴파일 방법 6가지 (윈도우 - 리눅스)[크로스 플랫폼 언어 Qt 프로그래밍 예제]


    6. QwtTextLabel 에러

    크로스 컴파일 과정에서 setPlainText 에러가 발생하니 처음부터 기본 TextLabel을 쓰는것이 좋을 듯 합니다. Label에 초기 텍스트를 설정하면 코드로 변경되며 setPlainText가 호출되지만 현재로선 원인을 알 수 없는 에러가 발생하며 컴파일이 안됩니다.


    우분투에선 안되지만 윈도우에선 잘됩니다.


     [크로스플랫폼 언어 Qt] Cross 컴파일 6가지 (윈도우 <-> 리눅스)

    written by vicddory

    반응형