本文非原創(chuàng),參考鏈接:How to convert QMake to CMake
假設(shè)我們想要將以下 qmake 的 .pro 文件轉(zhuǎn)換為 cmake:
QT += core
QT -= gui
CONFIG += c++11
TARGET = test
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
QT += network
SOURCES += main.cpp \
interface.cpp \
motomanlibrary.cpp \
processing.cpp
SOURCES += main.cpp \
interface.h \
motomanlibrary.h \
processing.h
將 qmake 的 .pro 的內(nèi)容復(fù)制到 CMakeLists.txt 中并開(kāi)始轉(zhuǎn)換要门。
qmake 所需的庫(kù):
QT += core
QT -= gui
QT += network
在 CMake 中處理上面的設(shè)置時(shí)只需要添加庫(kù)榜晦。因?yàn)?CMake 中沒(méi)有像 qmake 那樣的默認(rèn)設(shè)置冠蒋。因此沒(méi)有必要有刪除庫(kù)的步驟:
find_package(Qt5Core REQUIRED)
find_package(Qt5Network REQUIRED)
qmake 添加中編譯器標(biāo)志:
CONFIG += c++11
CMake 中根據(jù)需要擴(kuò)展編譯器標(biāo)志列表:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
qmake 中的資源文件處理:
SOURCES += main.cpp \
interface.cpp \
library.cpp \
processing.cpp
CMake 中創(chuàng)建資源文件列表:
set(SOURCES
main.cpp
interface.cpp
library.cpp
processing.cpp
)
qmake 中的頭文件引入:
HEADERS += interface.h \
library.h \
processing.h
CMake 中只需要頭文件的位置。
include_directory(.) # or include_directory(${CMAKE_CURRENT_SOURCE_DIR})
qmake 指定構(gòu)建目標(biāo):
TARGET = test
CMake 中設(shè)置目標(biāo)的名稱乾胶,添加源抖剿,鏈接所需的庫(kù)。
add_executable(test ${SOURCES} )
qt5_use_modules(test Core Network) # This macro depends from Qt version
# Should not be necessary
#CONFIG += console
#CONFIG -= app_bundle
#TEMPLATE = app