티스토리 뷰

목차

    반응형

    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 변환 방법

    반응형