본문 바로가기

Qt/라이브러리

Qt/Qt Creator에서 외부 라이브러리 사용하기


QLedIndicator를 예로 들어 보자.

QLedIndicator_libTest/
|---QLedIndicator_libTest.pro
|---main.cpp
|---mainwindow.cpp
|---mainwindow.h
|---mainwindow.ui
|---lib/
    |---qledindicator.h
    |---libqledindicator.a
    |---qledindicator.lib
    |---qledindicator.dll

QLedIndicator 라이브러리를 사용하려면 헤더 파일[각주:1]라이브러리 파일[각주:2], 마지막으로 공유 라이브러리 파일[각주:3]이 필요하다[각주:4]. 프로젝트 파일에 헤더 파일과 라이브러리 파일 경로를 기술하면 프로젝트를 빌드할 수 있다. 공유 라이브러리 파일을 실행 파일과 같은 경로에 두거나 공유 라이브러리 파일의 경로를 전역 환경 변수로 설정하면 실행 파일이 QLedIndicator를 사용할 수 있다[각주:5].

헤더 파일 경로 설정

프로젝트 파일에 헤더 파일 경로를 명시하지 않으면 헤더 파일을 인클루드할 때 전체 경로를 포함시켜야 한다.

#include "lib/qledindicator.h"

하지만 헤더 파일이 있는 include 폴더 경로를 명시하면 전체 경로를 포함시킬 필요가 없다.

#include "qledindicator.h"

프로젝트 파일에 헤더 파일 경로를 명시할 때는 INCLUDEPATH 변수에 헤더 파일 경로를 추가하자.

INCLUDEPATH += $$PWD/lib

PWD 변수는 현재 qmake가 파싱하고 있는 파일의 전체 경로를 담고 있다. 즉 이 예제에서는 프로젝트 파일의 전체 경로를 가진다.

라이브러리 파일 경로 설정

프로젝트 파일에 라이브러리 경로를 명시할 때는 LIBS 변수를 사용하자.

LIBS += -L$$PWD/lib -lqledindicator

-L로 시작하는 첫 번째 표현식은 라이브러리 파일을 검색할 경로를 링커에게 알려준다[각주:6]. -l로 시작하는 두 번째 표현식은 라이브러리 이름을 링커에게 알려준다. 컴파일러 별로 다른 라이브러리 확장자[각주:7]나 접두어[각주:8]는 명시할 필요가 없다.

완성된 프로젝트 파일은 다음과 같다.

Qt Creator 이용

Qt Creator에서 프로젝트를 작성 중이라면 프로젝트 파일 컨텍스트 메뉴에서 "Add Library..."을 클릭하자.

"Library Type" 단계 에서 "External library"를 선택하자.

"External Library" 단계에서 필요한 내용을 입력하자.

"Summary" 단계에서 프로젝트 파일에 추가될 내용을 확인하자.

생성된 프로젝트 파일은 다음과 같다.

DEPENDPATH 변수는 의존관계를 명시하기 위해 사용하는데, 이번 예제처덤 단순한 프로젝트에서는 삭제해도 상관 없다.


  1. qledindicator.h [본문으로]
  2. MinGW 사용 시 libqledindicator.a, MSVC 사용 시 qledindicator.lib [본문으로]
  3. qledindicator.dll [본문으로]
  4. 헤더 파일은 클라이언트 코드를 작성하고 컴파일 할 때, 라이브러리 파일은 프로젝트 빌드 중 링크 단계에서, 공유 라이브러리 파일은 실행 파일이 실행될 때 각각 필요함 [본문으로]
  5. Qt Creator에서 RUN 버튼으로 빌드/실행을 한다면 라이브러리 파일과 같은 경로에 두어야 함 [본문으로]
  6. 경로에 공백이 있다면 따옴표로 감싸야 함 [본문으로]
  7. *.a(MinGW), *.lib(MSVC) [본문으로]
  8. lib*(MinGW) [본문으로]