[QT]greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

2016. 12. 1. 18:44제2외국어/QT

<상황>

QT Creator(4.1.0)가 업데이트된지는 오래되었는데 귀찮아서 미루다 미루다 결국 재설치를 하였습니다.
예전에 만들어놓은 프로젝트를 새로 설치한 QT Creator에서 열어서 확인을 하는 중에 기존에 사용 중이던 Header를 제대로 읽지 못 하는 문제가 있었습니다.


Compile, Run 하는데 문제는 없지만 코드를 짤 때 자동완성 기능을 사용할 수 없는 치명적인 문제!


ex)

#include <QDialog>
#include <QWidget>

이런 기본적인 Header 파일들조차 인식하지 않아서 여러가지 시도를 해보다가,
새로운 프로젝트를 하나 생성 후에 확인 해보니 또 제대로 작동이 되어서 차이점을 찾는 중에 .pro 파일에서 차이점을 찾았습니다.

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

기존 프로젝트 .pro 파일에는 없는 한 줄이 새롭게 만들어진 프로젝트 .pro 파일에 있었는데요 


제가 Qt-4에서 작업 중이 었기 때문에 새롭게 설치한 Qt-5에서 해당 헤더파일들을 제대로 가져오지 못 해서 문제가 발생한 것으로 보여집니다.
Qt-5 Doc : http://doc.qt.io/qt-5/gettingstartedqt.html 에서 확인해도 같은 줄이 들어가 있습니다.



1) 직적 Qt 버전을 설정해주는 방법

QT_VERSION = 5   # this can be 4, set manually

equals(QT_VERSION, 5){
   QT += widgets
}
equals(QT_VERSION, 4) {
   QT += gui
}

2) 자동으로 Qt 버전을 설정하는 방법

greaterThan(QT_MAJOR_VERSION, 4) {
    QT += widgets
} 

참고한 URL : http://stackoverflow.com/questions/18663331/how-to-check-the-selected-version-of-qt-in-a-pro-file



결과적으로 위 두 방법 또는 Qt-5 공식 사이트에서 적혀있는


greaterThan(QT_MAJOR_VERSION, 4): QT += widgets


한 줄을 문제가 발생한 프로젝트의 .pro 파일에 추가한다면 이제 자동완성 기능을 사용하실 수 있습니다. 
(정상적으로 헤더파일을 읽을 수 있기 때문에...)
Success.