QT

[QT] Ubuntu 18.04LTS 환경설정에 QT 프레임워크 설치하기(X11 platform 용)

크게웃기 2019. 1. 31. 16:33
반응형

 

Ubuntu 18.04LTS 환경에 X11 Platform 용 QT 프레임워크를 설치 하려고 합니다.

잘 알고 계시겠지만,

참고로 말씀드리면 QT 프레임워크 빌드는 QT Application 개발만을 위해서는 굳이 진행하실 필요가 없습니다.

QT Appliation 개발을 위한 환경 설정 중이시라면 아래 링크를 참고 하시면 됩니다.

2020/03/12 - [QT] - Ubuntu 18.04에 QT Application 개발환경 설정

 

Ubuntu 18.04에 QT Application 개발환경 설정

오래 전에 QT framework source를 이용하여 ubuntu 18.04에 QT 개발 환경 설정하는 방법을 기록에 남긴 적이 있습니다. 2019/01/31 - [QT] - [QT] Ubuntu 18.04LTS 환경설정에 QT 프레임워크 설치하기(X11 platfor..

kakao-pc.tistory.com

 

실제 QT 프레임워크 빌드 목적은 여러가지이겠지만,

Cross platform 및 프레임워크 코드 수정 및 기능 추가가 아닐까 싶네요.

 

그럼 제가 진행하여 빌드 및 설치 성공한 결과를 블로그 해보도록 하겠습니다.

Ubuntu 18.04 LTS 환경에 QT 프레임워크 설치하기(X11 platrom 용)

1. QT framework Source Download

ubunt 에서 아래 링크로 접속하여 원하시는 QT Version 을 Download 하시면됩니다.

https://download.qt.io.archive/qt/ 

Web 실행 없이 Download를 원하신다면 wget을 사용 하시면됩니다.

(대신 정확한 url 을 아셔야 합니다. 저는 4.8.7을 설치 하였으므로 4.8.7 버젼 링크를 올려 두도록 하겠습니다.

wget https://download.qt.io/archive/qt/4.8/4.8.7/qt-everywhere-opensource-src-4.8.7.tar.gz

2. 다운로드 받은 파일 압축 해제 및 묶음 해제

이정도는 설명 없이도 하실수 있으시겠지요?

하지만, 명령문 적도록 하겠습니다.

tar xvf qt-everywhere-opensource-src-4.8.7-tar.gz

3. QT make 하기전 필요한 package를 설치 합니다.

예전에 작업한 것을 기억을 더듬어 가면 작성하고 있어 정확한 package가 기억이 안나는 군요.

우선, 해당 package 설치 후 빌드가 안되면 구글 검색 하시면 될 듯 합니다.(제가 생각이 난다면 추가 기입하겠습니다.)

sudo apt install build-essential libgl1-mesa-dev

4.configure 진행

configure 경우 현재 진행하는 platform 에 맞게 환경이 설정되도록 합니다.
그래서 configure의 경우 추가 옵션이 많이 존재합니다.
configure 관련하여 상세한 내용을 기입하고 싶지만 잘 모르기도하고,
해당 작성글 취지에도 벗어나기 때문에 다음에 따로 글을 올려 보도록 하겠습니다.

cd ./qt-everywhere-opensource-src-4.8.7
./configure

5. make

make

Ubuntu 18.04에서 QT make 진행시 아래와 같은 Build error가 발생할 것 입니다.

Ubuntu 18.04에 적용된 GCC 가 C++11이 Disable 되어 있어 발생한 Error 입니다.

../3rdparty/javascriptcore/JavaScriptCore/wtf/TypeTraits.h:173:69: error: ‘std::tr1’ has not been declared
     template<typename T> struct HasTrivialConstructor : public std::tr1::has_trivial_constructor<T> { };
                                                                     ^~~
../3rdparty/javascriptcore/JavaScriptCore/wtf/TypeTraits.h:173:74: error: expected ‘{’ before ‘has_trivial_constructor’
     template<typename T> struct HasTrivialConstructor : public std::tr1::has_trivial_constructor<T> { };
                                                                          ^~~~~~~~~~~~~~~~~~~~~~~
../3rdparty/javascriptcore/JavaScriptCore/wtf/TypeTraits.h:174:68: error: ‘std::tr1’ has not been declared
     template<typename T> struct HasTrivialDestructor : public std::tr1::has_trivial_destructor<T> { };
                                                                    ^~~
../3rdparty/javascriptcore/JavaScriptCore/wtf/TypeTraits.h:174:73: error: expected ‘{’ before ‘has_trivial_destructor’
     template<typename T> struct HasTrivialDestructor : public std::tr1::has_trivial_destructor<T> { };

 

위의 에러가 발생한다면 아래와 같이 옵션을 추가 해줍니다.

 

6. 애드블럭 해제 하시면 나타납니다.

6. QMAKE_CXXFLAGS 추가.

해당 파일에 아래 코드를 추가 해줍니다.

vi qt-everywhere-opensource-src-4.8.7/src/script/script.pro

line 112 : QMAKE_CXXFLAGS          += -std=gnu++98

 

7. make 진행

그럼, 또 Error가 발생 할 것입니다.

itemviews.cpp: In member function ‘virtual bool QAccessibleTable2::unselectColumn(int)’:
itemviews.cpp:396:105: error: conversion from ‘int’ to ‘QItemSelectionModel::SelectionFlags {aka QFlags<QItemSelectionModel::SelectionFlag>}’ is ambiguous
     view()->selectionModel()->select(index, QItemSelectionModel::Columns & QItemSelectionModel::Deselect);

 

애드블럭을 해제하면 수정 방법이 나타납니다.

해당 GCC 버젼에서 QFlags 값을 캐스팅 하지 못하여 발생한 Error 입니다.

그냥 static cast 를 적용 하시면 됩니다.

vi ./src/plugins/accessible/widgets/itemviews.cpp

//    view()->selectionModel()->select(index, QItemSelectionModel::Columns & QItemSelectionModel::Deselect);
    view()->selectionModel()->select(index, static_cast<QItemSelectionModel::SelectionFlags>(QItemSelectionModel::Columns & QItemSelectionModel::Deselect));

다시 make 합니다.

 

8. make install 

정상적으로 build 가 완료 될 것입니다.

make install

9. 환경변수 추가.

초기 configure 시 path를 지정하지 않게 되면 default 폴더로

'/usr/local/Trolltech/Qt-버젼/' 에 설치 하게 됩니다. 그러니 해당 path를 추가 시켜 줍니다.

.bashrc 를 하셔도 되고, profile 을 수정하셔도 됩니다.

저는 profile을 수정합니다.

vi .profile
PATH=/usr/local/Trolltech/Qt-%VERSION%/bin:$PATH
export PATH

바로 적용 되도록 아래 명령도 한번 넣어 줍니다.

setenv PATH /usr/local/Trolltech/Qt-4.8.7/bin:$PATH

 

이렇게 하시면 QT framework 빌드가 완성 됩니다.

추가로 필요하신 plugin 의 경우 아래 링크 sqlite, mariadb 연결을 위한 plugin 빌드 부분을 참고 하시면 될 것 같습니다.

2019/01/31 - [QT] - [QT] QT Application에 SQLite , mariaDB 연결하기

 

[QT] QT Application에 SQLite , mariaDB 연결하기

QT Application에 SQLite 또는 MariaDB 연결하기. 아무리 간단한 Application 이라도 설정값을 저장하기 위해 대부분 DB연결이 필요하기에 간단히 SQLite와 MariaDB 연결하는 방법을 블로그 해놓습니다. 1. 프로젝..

kakao-pc.tistory.com

 

그리고 블로그로 광고 수익 좀 내보고 싶어 애드블럭 실행되어져 있으면,

안보이도록 코드 좀 심어 놓았습니다. 양해 부탁드립니다.

 

 

 

 

반응형