한국어
Qt
 

qmake2cmake 도구는 QMake 프로젝트 파일(.pro)의 가장 일반적인 속성을 포함하는 CMakeLists.txt 를 생성한다. 생성된 CMake 프로젝트는 베이스로 사용할 수 있으며 수동 조정이 필요할 가능성이 크다.

변환할 수 없는 QMake 구성은 CMake 프로젝트에서 주석처리된다. 이러한 주석은 수동으로 조정해줄 때 참고하면 도움이 된다.

많은 프로젝트에는 하나 이상의 .pro 파일이 있다. QMake의 SUBDIRS 가 있는 프로젝트는 루트 디렉토리에서 작동하고 그 아래의 모든 것을 변환할 수 있는 qmake2cmake_all 이 있다.

반면 변환되지 않는 몇 가지 QMake 구성이 있다. 다음 항목들은 수동으로 변환해야 한다.

  • TEMPLATE = aux 프로젝트
  • 사용자 정의 .prf 파일
  • 추가 컴파일러
  • 추가 타겟

 

설치방법

python 을 사용하여 다음과 같이 qmake2cmake 를 간단하게 설치할 수 있다.

python -m pip install qmake2cmake

 

사용 방법

다음 호출은 단일 QMake 프로젝트 파일을 CMake로 변환한다.

qmake2cmake ~/projects/myapp/myapp.pro

기본적으로 CMakeLists.txt는 .pro 파일 옆에 생성된다.
다른 위치에 CMakeLists.txt를 생성하려면 -o 옵션을 사용하면 된다.

qmake2cmake ~/projects/myapp/myapp.pro -o ~/projects/myapp-converted/CMakeLists.txt

전체 프로젝트 트리를 변환하려면 프로젝트 디렉토리를 qmake2cmake_all에 전달한다.

qmake2cmake_all ~/projects/myapp --min-qt-version 6.3

프로젝트를 빌드할 가장 낮은 Qt 버전을 지정하면 Qt 버전에 적합한 CMake API가 선택된다.

이것을 모든 호출에 전달하지 않으려면 QMAKE2CMAKE_MIN_QT_VERSION 환경 변수를 설정하면 된다.

 

예제

다음의 example.pro 가 있으며 Qwt 라이브러리를 사용하고 있다.

QT       += core gui

CONFIG += c++11

QWT_CONFIG += QwtPlot QwtPolar QwtWidgets QwtSvg QwtOpenGL

QWT_ROOT = $${PWD}/qwt-6.2.0

INCLUDEPATH += $${QWT_ROOT}/src
DEPENDPATH  += $${QWT_ROOT}/src

INCLUDEPATH += $${QWT_ROOT}/classincludes
DEPENDPATH  += $${QWT_ROOT}/classincludes

INCLUDEPATH += $$PWD/Eigen

...

LIBS += -L$${QWT_ROOT}/lib/ -lqwt

 

변환

qmake2cmake example.pro

생성된 CMakeLists.txt 에서 수동으로 Qwt 라이브러리의 위치를 잡아주기위해 find_library 를 사용했다.

cmake_minimum_required(VERSION 3.16)
project(example VERSION 1.0 LANGUAGES CXX)

set(CMAKE_INCLUDE_CURRENT_DIR ON)

# When using Qt 6.3, you can replace the code block below with
# qt_standard_project_setup()
set(CMAKE_AUTOMOC ON)
include(GNUInstallDirs)
set(CMAKE_AUTOUIC ON)

find_package(QT NAMES Qt5 Qt6 REQUIRED COMPONENTS Core)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Gui)
...

target_include_directories(example PRIVATE
    Eigen
    qwt-6.2.0/classincludes
    qwt-6.2.0/src
)

# Qwt 라이브러리를 찾기위해 수동으로 넣어줌.
find_library (QWT_LIBRARY qwt
    PATHS ${CMAKE_CURRENT_SOURCE_DIR}/qwt-6.2.0/lib/
)

target_link_libraries(example PRIVATE
    # Remove: L${CMAKE_CURRENT_SOURCE_DIR}/qwt-6.2.0/lib/
    Qt::Core
    Qt::Gui
    ${QWT_LIBRARY}
)
...
번호 제목 글쓴이 날짜 조회 수
공지 Qt프로그래밍(QtQuick) Beginner를 위한 글 읽는 순서 운영자 2019.01.05 86948
19 Qt의 스레드간 시그널 슬롯의 커넥션타입 [1] makersweb 2015.10.24 10369
18 Ubuntu Linux에서 Qt Creator 설치 file makersweb 2016.03.06 10751
17 Qt 응용프로그램 배포(windows) file makersweb 2018.10.10 11612
16 Qt Installer Framework - 패키징, 설치프로그램 제작 file makersweb 2018.10.14 11833
15 QtSerialPort를 사용한 시리얼(Serial)통신 [3] makersweb 2019.05.21 12258
14 Qml 기본 컴포넌트 강좌 (1) file makersweb 2019.01.03 12281
13 Qt의 오픈소스 라이센스 소개 file makersweb 2019.12.15 12853
12 Windows에서 라즈베리파이3용 Qt5.10.0 크로스컴파일 [20] file makersweb 2018.02.23 13284
11 QML과 QtQuick 모듈 개념과 기본 타입들 makersweb 2019.04.26 13556
10 Qml과 C++로 구현하는 GUI어플리케이션 file makersweb 2018.12.25 14244
9 Qt 프로그래밍의 시작 makersweb 2015.10.25 14510
8 초보자를 위한 첫번째 프로젝트 - QML로 만드는 Hello World file makersweb 2018.03.16 14681
7 QtCreator Design으로 GUI만들기 (QML로 만드는 Hello World -2) [1] file makersweb 2019.05.26 15190
6 QThread 소개 및 예제 makersweb 2019.12.25 19916
5 Qt의 시그널 슬롯 시스템 file makersweb 2015.10.20 23927
4 Windows에서 Qt 설치 따라하기 file makersweb 2019.10.14 31103
3 QString 문자열 다루기 예제 운영자 2019.01.26 41039
2 콘솔에서 사용자 입력받기 file makersweb 2020.03.22 51928
1 가상키보드(Qt Virtual Keyboard)를 사용하는 방법 [32] file makersweb 2019.05.03 223182