본문

Windows 환경에서 Qt + MySQL 세팅하기

인터넷에 Qt자료가 없는데다가 MySQL 연동부분은 더욱 더 찾기 힘들었다 거기에 윈도 환경이라니.. 거의 하루종일 삽질하고 드디어 성공하여 기쁜마음으로 글을 적는다. 우선 연동하기 전에 프로그램을 잘 설치해야 한다. Qt에서는 소스파일 패키지가 설치되어 있어야 한다. Miscellaneous -> Qt Sources 에 하나라도 체크가 된 상태로 진행해야 하며 그 단계가 이미 넘어갔다면 Maintain Qt SDK에서 추후에 설치해 줄 수 있다. 



[그림 1] 이건 지원이 안되는 5.5 버전. 대신 설치과정은 크게 다를 것이 없다.


그리고 MySQL을 설치해야 하는데 현재 GA(Generally Available)상의 최신 버전인 mysql-5.5.25a-win32 를 설치하는 대신 지난 버전인 mysql-5.1.63-win32 을 설치해야 잘 동작하였다. 용량도 전자는 30mb를 차지하는 반면 후자는 100mb 정도를 차지하며, 글의 주제에 있어 가장 큰 차이점이라면 lib\opt 폴더가 후자에만 존재한다는 것이다. 설치 과정에서는 custom을 선택하여 Developer Components의 C Include Files / Lib Files가 선택되어있는것을 확인한다. 또한 편의를 위해 Browse를 클릭하여 설치 경로를 c:\mysql으로 변경하는것이 좋다. 


이 둘의 설치가 모두 끝나면 이제 명령어를 입력해 줄 차례이다. VS 명령 프롬프트에서와 같이 MinGW를 위한 프롬프트를 띄워준다. Qt SDK -> Desktop -> Qt [설치된 소스 버전] for Desktop (MinGW) 을 실행해 주면 명령 프롬프트가 뜬다. 이제 API 문서상에 나와있는 명령을 입력하면 되는데 약간 수정을 해야한다. 우선 QTDIR 환경변수(%QTDIR%)는 mingw 폴더로 지정이 되어있기 떄문에 바꾸어야 한다. 만약 4.8.1버전의 소스가 설치되었다면 cd C:\QtSDK\QtSources\4.8.1\src\plugins\sqldrivers\mysql 을 입력하고 이 폴더로 이동한다.


다음은 다음과 같이 qmake를 실행한다. 아까 mysql 설치할때 경로를 바꾸어 주었으면 편하다. 'MySQL Server...' 으로 설치경로가 공식홈페이지에 나와있던데 헷갈리게 만들기 딱 좋다. qmake "INCLUDEPATH+=C:\MySQL\include" "LIBS+=C:\MySQL\lib\opt\libmysql.lib" mysql.pro 이 명령을 실행하면 WARNING: (internal):1: Unescaped backslashes are deprecated. 라는 경고메시지가 뜨는데 역시 익숙한 대로, 경고는 무시한다! 그리고 마지막 명령을 실행시킬 차례, 본문에는 nmake라고 나와있는데 이건 VS 프롬프트를 위한 것이고, MinGW 환경으로 실행하는 만큼, make만 입력한다.


설명이 길었는데 결국 설치후 다음 3가지 명령만 입력하면 되는것이다.

cd C:\QtSDK\QtSources\4.8.1\src\plugins\sqldrivers\mysql

qmake "INCLUDEPATH+=C:\MySQL\include" "LIBS+=C:\MySQL\lib\opt\libmysql.lib" mysql.pro

make


이러면 하위 debug 폴더에 qsqlmysqld4.dll, libqsqlmysqld4.a 등이 생긴다. 사실 이 이후로 바로 적용이 안되어 여러가지 설정을 해보다가 진행이 되었는데 그동안 한것으로는.. (.pro 파일과 관련있을 것으로 생각했으나 전혀 그렇지 않고 qt툴과 자동으로 연결이 된다. qt 툴을 쓰다보면 사용자의 지정없이 자동으로 처리되는 부분이 은근히 있는데 오히려 그게 더 신경쓰인다.) C:\QtSDK\QtCreator\lib\qtcreator\plugins, C:\QtSDK\Desktop\Qt\4.8.1\mingw\plugins\sqldrivers 확인과(생성된 파일 복사) %PATH%에 c:\mysql\bin 을 한것이다. 


그럼 이제 프로젝트.pro 에 QT+= sql을 하고 다음을 실행해보자.  

QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");


QSqlDatabase: QMYSQL driver not loaded

QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC

위 오류메시지가 나오면 더욱 더 삽질을 해야 할것이고, 아무것도 뜨지 않는다면 이제 본격적으로 프로그래밍을 시작할 차례다.


출처 : Qt 4.6: SQL Database Drivers

Qt 4.5 and MySQL-plugin with Mingw on Windows XP

댓글

Holic Spirit :: Tistory Edition

design by tokiidesu. powerd by kakao.