티스토리 뷰
목차
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...
[Qt 프로그래밍] Qt 프로젝트와 Qt Creator
그 다음,
비주얼스튜디오 - QT5 - Convert project to QMake generated project
[Qt 프로그래밍] Qt 프로젝트와 Qt Creator
선택사항
Qt 버전이 다양하기 때문에 목적에 맞는 버전으로 수정할 필요도 있습니다. 비주얼스튜디오 Set Project's Qt Version에서 선택합니다.
[Qt 프로그래밍] Qt 프로젝트와 Qt Creator
네 번째
QtCreator에서 생성된 .pro 파일을 통해 프로젝트를 불러옵니다.
하지만, build.... 하면 에러가 뜹니다.
[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)...
[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" -o "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 파일을 비교했지요.
[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 변환 방법