如何将qmake转换为cmake?

Ana*_*ões 15 qt qmake cmake

我的项目中有.pro文件,但现在我想将它移植到CMakeLists.txt文件,我该怎么做?

QT += core
QT -= gui
CONFIG += c++11
TARGET = test
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
QT += network
SOURCES += main.cpp \
    test_interface.cpp \
    motomanlibrary.cpp \
    processing.cpp
SOURCES += main.cpp \
    test_interface.h \
    motomanlibrary.h \
    processing.h
Run Code Online (Sandbox Code Playgroud)

Th.*_*ann 23

QMake:所需的库.

QT += core
QT -= gui
QT += network
Run Code Online (Sandbox Code Playgroud)

CMake:只需添加即可.

find_package(Qt5Core REQUIRED)
find_package(Qt5Network REQUIRED)
Run Code Online (Sandbox Code Playgroud)

QMake:其他编译器标志:

CONFIG += c++11
Run Code Online (Sandbox Code Playgroud)

CMake:根据需要扩展编译器标志列表

set(CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS} -std=c++0x")
Run Code Online (Sandbox Code Playgroud)

QMake:源文件

SOURCES += main.cpp \
    test_interface.cpp \
    motomanlibrary.cpp \
    processing.cpp
Run Code Online (Sandbox Code Playgroud)

CMake:创建源文件列表

set(SOURCES
    main.cpp
    test_interface.cpp
    motomanlibrary.cpp
    processing.cpp
)
Run Code Online (Sandbox Code Playgroud)

QMake:标题包括:

SOURCES += main.cpp \
    test_interface.h \
    motomanlibrary.h \
    processing.h
Run Code Online (Sandbox Code Playgroud)

CMake:只显示头文件的位置

include_directory(.) #  or include_directory(${CMAKE_CURRENT_SOURCE_DIR})
include_directory(some/where/else)
Run Code Online (Sandbox Code Playgroud)

QMake:建立的目标:

TARGET = test
Run Code Online (Sandbox Code Playgroud)

CMake:设置目标的名称,添加源,链接所需的库.

add_executable(test ${SOURCES} )
qt5_use_modules(test Core Network) # This macro depends from the Qt version

# Should not be necessary
#CONFIG += console
#CONFIG -= app_bundle
#TEMPLATE = app
Run Code Online (Sandbox Code Playgroud)

请参阅有关将qmake转换为cmake的更多详细信息

  • 我相信向Cmake项目添加Qt ilb的“新”推荐方法是使用“ target_link_libraries”。“ target_link_libraries(测试Qt5 :: Core)”和“ target_link_libraries(测试Qt5 :: Network)”等。Ref:https://doc.qt.io/qt-5/cmake-get-started.html和https: //doc.qt.io/qt-5/cmake-command-reference.html (2认同)

小智 9

在 Qt Base 的 WIP 分支上有一个 Python 脚本可以将 QMake 转换为 CMake:https ://code.qt.io/cgit/qt/qtbase.git/tree/util/cmake/pro2cmake.py?h=wip /制作

当 CMake 成为主要构建系统时,它可能会与 Qt 6 一起发布。

  • 现在在 https://code.qt.io/cgit/qt/qmake2cmake.git/ 有自己的存储库 (2认同)