如何转换 qmake 到 CMake
2020-06-08 本文已影响0人
赵者也
本文非原创,参考链接:How to convert QMake to CMake
假设我们想要将以下 qmake 的 .pro 文件转换为 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 的内容复制到 CMakeLists.txt 中并开始转换。
qmake 所需的库:
QT += core
QT -= gui
QT += network
在 CMake 中处理上面的设置时只需要添加库。因为 CMake 中没有像 qmake 那样的默认设置。因此没有必要有删除库的步骤:
find_package(Qt5Core REQUIRED)
find_package(Qt5Network REQUIRED)
qmake 添加中编译器标志:
CONFIG += c++11
CMake 中根据需要扩展编译器标志列表:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
qmake 中的资源文件处理:
SOURCES += main.cpp \
interface.cpp \
library.cpp \
processing.cpp
CMake 中创建资源文件列表:
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 指定构建目标:
TARGET = test
CMake 中设置目标的名称,添加源,链接所需的库。
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