如何转换 qmake 到 CMake

本文非原创,参考链接: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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容