DLL 만들기
지금까지 GraphicEditor를 만들면서 제공한 파일들을 DLL로 만들어 보도록 하겠습니다.
File 메뉴의 부메뉴 New File or Project...를 선택하면 다음과 같이 화면에 나타납니다.
Projects를 Library로 선택 후 C++ Library를 선택하고 Choose...를 선택하면 다음과 같이 화면에 나타납니다.
Name에 만들고자하는 DLL 프로젝트 이름인 CommonLib를 입력합니다.
Next를 선택하면 다음과 같이 화면에 나타납니다.
Next를 선택하면 다음과 같이 화면에 나타납니다.
Next를 선택하면 다음과 같이 화면에 나타납니다.
Next를 선택하면 다음과 같이 화면에 나타납니다.
Desktop Qt 6.2.3 MSVC2019 64bit를 체크하고 Next를 선택하면 다음과 같이 화면에 나타납니다.
Finish를 선택하면 다음과 같이 프로젝트가 추가됩니다.
GraphicEditor 프로젝트 폴더로 가서 다음과 같이 DLL로 만들 파일을 선택합니다.
Ctrl+X를 눌러 잘라내기를 합니다.
CommonLib 폴더로 옮겨가 Ctrl+V를 눌러 다음과 같이 붙여넣기를 합니다.
CommonLib 프로젝트에서 마우스 오른쪽 버튼을 클릭하여 생성된 팝업 메뉴에서 Add Existing Files...를 실행하면 다음과 같이 화면에 나타납니다.
추가할 파일들을 모두 선택하고 열기를 클릭하면 다음과 같이 프로젝트에 추가가됩니다.
제공한 파일들에서 widget관련 class를 사용하므로 CommonLib.pro를 열어 다음과 같이 widgets를 추가해 줍니다.
Header 파일들을 열어 DLL에서 구성한 Class라고 알려주기 위해 아래와 같이 CommonLib_global.h를 Include해주고 class 마다 COMMONLIB_EXPORT를 입력해 줍니다.
참고로 datatype.h에는 class가 없으므로 입력해줄 필요가 없습니다.
DLL 제작이 완료되었습니다.
컴파일을 하면 dll(CommonLib) 파일과 exe(GraphicEditor) 파일이 별도의 폴더에 생성이 됩니다.
사용의 편의를 위해 하나의 폴더에 결과물이 생기도록 구성하는 것이 좋습니다.
CommonLib.pro 파일을 열어 제일 아래 쪽에 아래와 같이 두줄을 입력합니다.
CONFIG(release, debug|release): DESTDIR = $$PWD/../Exe/Bin
CONFIG(debug, debug|release): DESTDIR = $$PWD/../Exe/Debug
CommonLib 폴더와 같은 레벨에 Exe 폴더를 두고 release 버전은 Bin 폴더에 Debug 버전은 Debug 폴더에 생성하도록 목적지 폴더(DESTDIR)를 설정한 것입니다.
이제 GraphicEditor가 제작한 DLL을 사용하도록 수정해보겠습니다.
GraphicEditor.pro를 열어 HEADERS에서 DLL로 만든 파일들을 모두 삭제합니다.
마지막 항목은 슬레쉬 기호가 빠져 있는것을 기억하시기 바랍니다.
SOURCES에서도 해당파일을 모두 삭제합니다.
GraphicEditor.pro 파일의 제일 마지막으로 가 다음과 같이 입력합니다.
#Header(.h) 파일을 어디에서나 사용할 수 있도록 설정합니다.
INCLUDEPATH += $$PWD/../CommonLib
#CommonLib을 사용할 수 있록 라이브러리를 등록합니다.
CONFIG(release, debug|release): LIBS += -L$$PWD/../Exe/Bin/ -lCommonLib
else:CONFIG(debug, debug|release): LIBS += -L$$PWD/../Exe/Debug/ -lCommonLib
#CommonLib 에서와 같이 Exe 폴더를 두고 release 버전은 Bin 폴더에 Debug 버전은 Debug 폴더에 생성하도록 목적지 폴더(DESTDIR)를 설정합니다.
CONFIG(release, debug|release): DESTDIR = $$PWD/../Exe/Bin
CONFIG(debug, debug|release): DESTDIR = $$PWD/../Exe/Debug
Release로 컴파일하기
Projects를 클릭하여 나타난 화면에서 Edit build configuration을 Release로 선택합니다.
Edit를 클릭하여 Build를 하면 CommonLib가 Release로 컴파일이 됩니다.
GraphicEditor에서 마우스 오른쪽 버튼을 클릭하여 생성된 팝업 메뉴에서 Set "GraphicEditor" as Active Project를 선택하면 GraphicEditor 프로젝트가 Active됩니다.
같은 방식으로 Projects를 선택하여 Release로 설정하고 Build를 실행하여 컴파일합니다.
배포하기
실행파일이 생성되는 폴더로 가면 다음과 같이 결과물이 생성되어 있습니다.
GraphicEdiotr.exe를 실행하면 다음과 같이 대화상자가 화면에 나타나 실행이 되지 않습니다.
QT용 dll이 없어 나타나는 문제로 필요한 dll을 결과물 폴더로 복사해야 하는데 파일이 제법 많습니다. 하나씩 복사하면 되나 다음과정으로 좀더 쉽게 복사가 됩니다.
결과물 폴더로 이동해야 하므로 탐색기에서 위치를 클릭하고, Ctrl+C를 눌러 복사해 둡니다.
시작메뉴의 QT 폴더로 가서 Qt 6.2.3(MSVC 2019 64-bit)를 실행하면 다음과 같이 화면에 나타납니다.
d:을 입력하고 Enter를 눌러 d드라이버로 이동합니다.
cd를 입력하고 스페이스 키를 눌러 한칸 띄우게 한 후 마우스 오른쪽 버튼을 클릭하면 복사해둔 위치가 다음과 같이 붙여 넣기가 됩니다.
Enter키를 치면 해당 폴더로 이동합니다.
사용할 명령어는 windeployqt이며 이명령어 뒤에 파일을 넣으면 그 파일이 사용하는 모든 dll를 현재 폴더로 복사해 줍니다.
windeployqt CommonLib.dll을 입력하고 Enter키를 누릅니다.
windeployqt GraphicEditor.exe을 입력하고 Enter키를 누릅니다.
이제 해당 폴더로 가면 다음과 같이 dll 파일들과 필요한 폴더들이 생성되어 있습니다.
이제 GraphicEditor.exe를 실행하면 실행이 됩니다.
예제 프로그램
'QT' 카테고리의 다른 글
QT11. Linux 개발환경 구축 (7) | 2024.09.14 |
---|---|
QT10. 안드로이드 개발환경 구축 (3) | 2024.09.13 |
QT06. 스크롤 (0) | 2022.03.17 |
설치 파일 만들기 (0) | 2022.03.12 |
QT08. 파일 및 인쇄 (0) | 2022.03.09 |