본문 바로가기
C++ 200제/코딩 IT 정보

Qt 프로그래밍 프로젝트, VisualStudio -> Qt Creator 변환 방법

by vicddory 2017. 4. 30.

Qt 프로그래밍 프로젝트, VisualStudio -> Qt Creator 변환 방법


이 포스트에서 소개하는 개발 환경은 Visual Studio 2012 + Qt 5.3.2입니다. Qt 프로그래밍에 필요한 팁입니다.


첫 번째

프로젝트의 한글 경로를 모두 제거합니다. 즉, 폴더 이름을 바꾸던지 다른 경로로 옮기세요.

QtCreator은 한글 경로 인식 못 합니다. 비주얼스튜디오에서 할 수는 있는데... ... ... .. .. . .


두 번째

한글 경로를 변경하면 Visual Studio에서 사용하는 .pro.user 내부의 경로까지 바뀌진 않습니다. 그러하니 일일이 손으로 고쳐줘야 합니다만, 다행히 많은 양은 아니라 그냥 고칠 수 있어요.


1
2
3
4
5
6
7
8
9
10
<variable>ProjectExplorer.Project.Target.0</variable>
  <value type="QString" 
 key="ProjectExplorer.BuildConfiguration.BuildDirectory">"경로"</value>
 
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
    <value type="QString" 
 key="ProjectExplorer.BuildConfiguration.BuildDirectory">"경로"</value>
 
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">
    Qt4ProjectManager.Qt4RunConfiguration:"경로"</value>
cs

세 번째

QtCreator에서 사용할 수 있도록 .pro 파일을 생성해야 합니다. 각종 옵션은 어차피 리눅스 환경이나 QtCreator에서 수정해야 하니 기본값으로 설정하세요. 즉, 그냥 OK 누르세요.


  QT5 -> Create basic .pro file...


QT5 - Create basic .pro file[Qt 프로그래밍] Qt 프로젝트와 Qt Creator


그 다음,


  비주얼스튜디오 - QT5 - Convert project to QMake generated project


QT5 - Convert project to QMake generated project[Qt 프로그래밍] Qt 프로젝트와 Qt Creator


선택사항

Qt 버전이 다양하기 때문에 목적에 맞는 버전으로 수정할 필요도 있습니다. 비주얼스튜디오 Set Project's Qt Version에서 선택합니다.


QT5 - Change project's Qt Version[Qt 프로그래밍] Qt 프로젝트와 Qt Creator


네 번째

QtCreator에서 생성된 .pro 파일을 통해 프로젝트를 불러옵니다.

하지만, build.... 하면 에러가 뜹니다.


C1083 포함 파일을 열 수 없습니다 QSerialPort[Qt 프로그래밍] Qt 프로젝트와 Qt Creator


해결책 1

아래처럼 일일이 경로를 수정합니다.


1
2
3
4
5
6
7
8
9
10
11
#include <QtSerialPort/qserialport.h>
#include <QSerialPort>
 
#include <Qwt/qwt_plot.h>
#include "qwt_plot.h"
 
#include <Qwt/qwt_text_label.h>
#include "qwt_text_label.h"
 
#include <Qwt/qwt_wheel.h>
#include "qwt_wheel.h"
cs

해결책 2

경로가 왜 저럴까...라고 고민하고 나서 .pro 파일을 열어봅시다. 아래처럼 Visual Studio에서 생성된 .pro 파일의 구성이 보입니다.


QtCreator를 다룰 때 설정하던 이런저런 사항들이 보이죠.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# ----------------------------------------------------
# This file is generated by the Qt Visual Studio Add-in.
# ------------------------------------------------------
 
TEMPLATE = app
TARGET = QCDS
DESTDIR = ./bin/Win32/Debug
QT += core network opengl widgets gui serialport
CONFIG += debug
DEFINES += WIN64 QT_DLL QT_NETWORK_LIB QT_WIDGETS_LIB QWT_DLL QT_OPENGL_LIB
 
INCLUDEPATH += $(ProjectDir)../Bin/GeneratedFiles \
    . \
    $(ProjectDir)../Bin/GeneratedFiles/Debug \
    ./../Bin/GeneratedFiles \
    ./GeneratedFiles
 
LIBS += -lqwtd \
    -lopengl32 \
    -lglu32
 
DEPENDPATH += .
MOC_DIR += ./../Bin/GeneratedFiles/debug
OBJECTS_DIR += debug
UI_DIR += ./GeneratedFiles
RCC_DIR += ./GeneratedFiles
 
include(QCDS.pri)
TRANSLATIONS += qcds_ko.ts 
cs


우선 Visual Studio로 돌아갑니다. Visual Studio에서 .pro 파일을 불러옵시다.


  비주얼스튜디오 - QT5 - Open Qt Project File (.pro)... 


QT5 - Open Qt Project File (.pro)[Qt 프로그래밍] Qt 프로젝트와 Qt Creator


이 상태로 빌드를 해보면 여지없이 에러가 뜹니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
--- (Import): Generating new project of QCDS.pro file
--- (qmake) : Using: c:\qt\qt5.3.2\5.3\msvc2012_opengl\bin\qmake
--- (qmake) : Working Directory: C:\Working\src\QCDS\Src
--- (qmake) : Arguments: -tp vc "QCDS.pro" -"QCDS.vcxproj"
 QMAKE_INCDIR_QT=$(QTDIR)\include
 QMAKE_LIBDIR=$(QTDIR)\lib
 QMAKE_MOC=$(QTDIR)\bin\moc.exe
 QMAKE_QMAKE=$(QTDIR)\bin\qmake.exe
 
[1- RCC: Warning: No resources in 'QCDS.qrc'.
[2- 
[3- RCC: Warning: No resources in 'QCDS.qrc'.
[4- 
[5- RCC: Warning: No resources in 'QCDS.qrc'.
[6- 
[7- RCC: Warning: No resources in 'QCDS.qrc'.
[8- 
[9- Project MESSAGE: You are running qmake on a generated .pro file. This may not work!
[10- Project MESSAGE: You are running qmake on a generated .pro file. This may not work!
[11- Project MESSAGE: You are running qmake on a generated .pro file. This may not work!
 
--- (Import): Error(s): 11
--- (qmake) : Exit Code: 0
 
Project already in Solution
 
=== Update uic steps ===
Update uic step for QCDS.ui.
Update uic step for dlg_config.ui.
 
=== 2 uic steps updated. ===
 
 
=== Update rcc steps ===
Update rcc step for QCDS.qrc.
 
=== 1 rcc steps updated. ===
cs


중간에 Import 에러가 발생한 것을 확인해 볼 수 있습니다.


동일한 .pro를 이용하면 비주얼스튜디오랑 큐티 크리에이터 두 개의 툴에서 모두 에러를 발생시킨다는 것이죠.

하지만 .pro를 불러온 상태에서 새롭게 .pro 파일을 생성해보면, 파일의 구성이 달라지는 것을 확인할 수 있습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
----------------------------------------------------
# This file is generated by the Qt Visual Studio Add-in.
------------------------------------------------------
 
TEMPLATE = app
TARGET = QCDS
DESTDIR = ./bin/Win32/Debug
CONFIG += debug
DEFINES += WIN64 QT_DLL QT_NETWORK_LIB QT_WIDGETS_LIB QWT_DLL QT_SERIALPORT_LIB QT_OPENGL_LIB
INCLUDEPATH += ../../../../../Qt/Qt5.3.2/5.3/msvc2012_opengl/include/QtSerialPort \
    ../../../../../Qt/Qt5.3.2/5.3/msvc2012_opengl/include/Qwt \
    $(ProjectDir)../Bin/GeneratedFiles \
    . \
    ../../../../../Qt/Qt5.3.2/5.3/msvc2012_opengl/include \
    $(ProjectDir)../Bin/GeneratedFiles/Debug \
    ../../../../../Qt/Qt5.3.2/5.3/msvc2012_opengl/include/QtCore \
    ../../../../../Qt/Qt5.3.2/5.3/msvc2012_opengl/include/QtGui \
    ../../../../../Qt/Qt5.3.2/5.3/msvc2012_opengl/include/QtNetwork \
    ../../../../../Qt/Qt5.3.2/5.3/msvc2012_opengl/include/QtWidgets \
    ./../Bin/GeneratedFiles \
    ../../../../../Qt/Qt5.3.2/5.3/msvc2012_opengl/include/QtOpenGL \
    ./GeneratedFiles
LIBS += -L"../../../../../Qt/Qt5.3.2/5.3/msvc2012_opengl/lib" \
    -lC:/Qt/Qt5.3.2/5.3/msvc2012_opengl/lib/qtmaind \
    -lC:/Qt/Qt5.3.2/5.3/msvc2012_opengl/lib/Qt5Cored \
    -lC:/Qt/Qt5.3.2/5.3/msvc2012_opengl/lib/Qt5Guid \
    -lC:/Qt/Qt5.3.2/5.3/msvc2012_opengl/lib/Qt5Networkd \
    -lC:/Qt/Qt5.3.2/5.3/msvc2012_opengl/lib/Qt5Widgetsd \
    -lqwtd \
    -lC:/Qt/Qt5.3.2/5.3/msvc2012_opengl/lib/Qt5SerialPort \
    -lC:/Qt/Qt5.3.2/5.3/msvc2012_opengl/lib/Qt5OpenGLd \
    -lopengl32 \
    -lglu32
 
DEPENDPATH += .
 
MOC_DIR += ./../Bin/GeneratedFiles/debug
OBJECTS_DIR += debug
 
UI_DIR += ./GeneratedFiles
RCC_DIR += ./GeneratedFiles
 
include(QCDS.pri)
 
TRANSLATIONS += qcds_ko.ts
cs


딱 봐도, 구성 요소가 많아졌음을 확인할 수 있지요.


그냥 봐선 정확히 알 수 없으니 조르고 조르고 졸라서 겨우 사게 된 VMware를 이용했습니다.


Ubuntu에 meld를 설치하고 .pro 파일을 비교했지요.


Ubuntu Meld - pro 파일 비교[Qt 프로그래밍] Qt 프로젝트와 Qt Creator


에러가 발생했던 11개의 비주얼스튜디오 Import 사항이 몽땅 삽입되어있습니다.


그냥 pro 파일을 만들면 뭔가 비는데 Visual Studio에서 .pro 파일을 열고 난 뒤에 .pro 파일을 다시 생성하면 거의 완벽한 상태의 pro 파일이 생성됩니다.


헌데, 종종 아래처럼 경로가 꼬여버리는 사태도 발생합니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
----------------------------------------------------
# This file is generated by the Qt Visual Studio Add-in.
------------------------------------------------------
 
TEMPLATE = app
TARGET = QCDS
DESTDIR = ./bin/Win32/Debug
CONFIG += debug
DEFINES += WIN64 QT_DLL QT_NETWORK_LIB QT_WIDGETS_LIB QWT_DLL.....
INCLUDEPATH += ../../../../../Qt/Qt5.3.2/5.3/msvc2012_opengl/include/QtSerialPort \
    ../../../../../Qt/Qt5.3.2/5.3/msvc2012_opengl/include/Qwt \
    $(ProjectDir)../Bin/GeneratedFiles \
    . \
    ../../../../../Qt/Qt5.3.2/5.3/msvc2012_opengl/include \
    $(ProjectDir)../Bin/GeneratedFiles/Debug \
    ../../../../../Qt/Qt5.3.2/5.3/msvc2012_opengl/include/QtCore \
    ../../../../../Qt/Qt5.3.2/5.3/msvc2012_opengl/include/QtGui \
    ../../../../../Qt/Qt5.3.2/5.3/msvc2012_opengl/include/QtNetwork \
    ../../../../../Qt/Qt5.3.2/5.3/msvc2012_opengl/include/QtWidgets \
    ./../Bin/GeneratedFiles \
    ../../../../../Qt/Qt5.3.2/5.3/msvc2012_opengl/include/QtOpenGL \
    ./GeneratedFiles
LIBS += -L"../../../../../Qt/Qt5.3.2/5.3/msvc2012_opengl/lib" \
    -lC:/C:/Qt/Qt5.3.2/5.3/msvc2012_opengl/lib/Qt/Qt5.3.2/5.3/msvc2012_opengl/lib/....
    -lC:/C:/Qt/Qt5.3.2/5.3/msvc2012_opengl/lib/Qt/Qt5.3.2/5.3/msvc2012_opengl/lib/Qt5Cored \
    -lC:/C:/Qt/Qt5.3.2/5.3/msvc2012_opengl/lib/Qt/Qt5.3.2/5.3/msvc2012_opengl/lib/Qt5Guid \
    -lC:/C:/Qt/Qt5.3.2/5.3/msvc2012_opengl/lib/Qt/Qt5.3.2/5.3/msvc2012_opengl/lib/Qt5Networkd \
    -lC:/C:/Qt/Qt5.3.2/5.3/msvc2012_opengl/lib/Qt/Qt5.3.2/5.3/msvc2012_opengl/lib/Qt5Widgetsd \
    -lqwtd \
    -lC:/C:/Qt/Qt5.3.2/5.3/msvc2012_opengl/lib/Qt/Qt5.3.2/5.3/msvc2012_opengl/lib/Qt5SerialPort \
    -lC:/C:/Qt/Qt5.3.2/5.3/msvc2012_opengl/lib/Qt/Qt5.3.2/5.3/msvc2012_opengl/lib/Qt5OpenGLd \
    -lopengl32 \
    -lglu32
DEPENDPATH += .
MOC_DIR += ./../Bin/GeneratedFiles/debug
OBJECTS_DIR += debug
UI_DIR += ./GeneratedFiles
RCC_DIR += ./GeneratedFiles
include(QCDS.pri)
TRANSLATIONS += qcds_ko.ts
cs


빨간 줄을 보면 비주얼스튜디오 경로가 이상하게 꼬여있어요. 매뉴얼을 흘겨봐서 정확히 숙지하지 못한 덕택에 버그인지 제 잘못인진 정확히 모르겠네요.


만약, 저렇게 경로가 꼬여버린다면, 그럴 땐 .pro 파일도 수정해줘야 하고, Visual Studio에서도 수정을 또 해줘야 합니다.


  프로젝트 속성 - 링커 - 입력 - 추가 종속성의 경로


프로젝트 속성 - 링커 - 입력 - 추가 종속성의 경로[Qt 프로그래밍] Qt 프로젝트와 Qt Creator


이 과정만 잘 이루어진다면 Visual Studio에서 작성한 프로젝트를 QtCreator에서도 무리 없이 사용할 수 있게 됩니다.


Qt 프로그래밍 프로젝트, VisualStudio -> Qt Creator 변환 방법

댓글