将QMAKE项目转换为CMAKE



我最近开始刷新我的C 知识(大约10年〜(。我选择使用QTCreator,因为我想了解更多有关QT的信息,这些QT仅尝试一次。

现在,我创建了一个Qmake项目,一切都很好,但是我也想了解CMAKE,我想为此目的将项目转换为Cmake。

不幸的是,我与C 的构建过程有关的知识很小,我通常只是让IDE为我处理所有这些东西,因为我的项目很小。

现在,我想请您帮助我将我的qmake .pro文件移至cmake cmakelists.txt,这很简单。

QT       += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = model_view_playground
TEMPLATE = app
DEFINES += QT_DEPRECATED_WARNINGS
QMAKE_CXXFLAGS += -std=c++0x
SOURCES += main.cpp
        mainwindow.cpp 
    testitemlistmodel.cpp
HEADERS  += mainwindow.h 
    testclass.h 
    testitemlistmodel.h
FORMS    += mainwindow.ui
DISTFILES +=

我通常不喜欢获得"插头和播放"解决方案,但是在我深入研究之前,我想将其转换并能够构建。

至于建筑物,这是一个不同的问题,但也许有人也可以回答这个问题 - 我是否需要对qtcreator进行任何更改,以使其在我的项目中使用cmake而不是qmake(或者理想地将它们保持一边并排在CMAKE和QMAKE之间切换(?

我已经在构建中添加了cmake&运行 -> cmake(已自动进行自动进行(。

qt编程的qmake和cmake之间的差异是Qmake已经知道在哪里可以找到QT库和来源。Cmake不知道这一点,您可能有库的正确位置。通常,您会声明环境变量qt_dir。我将用QT5举一个示例,因为我忘记了如何在Cmake

中创建QT4项目
project(Qt5Project) # Your project name
set(CMAKE_CXX_STANDARD 11) # This is equal to QMAKE_CXX_FLAGS += -std=c++0x
# Find includes in corresponding build directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)
# Instruct CMake to run moc automatically when needed.
set(CMAKE_AUTOMOC ON)
# Instruct CMake to run uic automatically when needed.
set(CMAKE_AUTOUIC ON)
# This will find the Qt5 files. You will need a QT5_DIR env variable
find_package(Qt5Widgets REQUIRED) # Equivalent of QT += widgets
set(SOURCES main.cpp mainwindow.cpp testitemlistmodel.cpp) 
set(HEADERS mainwindow.h testclass.h testitemlistmodel.h)
set(UI mainwindow.ui)
# This will create you executable
add_executable(model_view_playground ${SOURCES} ${HEADERS} ${UI})
# This will link necessary Qt5 libraries to your project
target_link_libraries(model_view_playground Qt5::Widgets)

对于一个简单的项目,像这样的脚本将服务。

qtcreator已经对CMAKE项目有所支持,您只需要打开一个带有cmakelists.txt的文件夹,而IDE将识别为CMAKE项目

另外,对于这样一个简单的项目(一个可执行文件,没有libs(,您可以使用我的脚本cmake-project,它等同于qmake -project:https://github.com/kdab/kdab/kdtoolbox/tree/master/qt/cmake-project

只需在您的源代码中运行它,它将生成一个CMakeLists.txt以将所有源构建为单个可执行文件。

可以考虑使用qmake2cmake。

这些是QT提供的python脚本,使得可以转换一个pro文件或整个项目树。

qmake2cmake ~/projects/myapp/myapp.pro只需将 myapp.pro转换为沿myapp.proCMakeLists.txt文件。

qmake2cmake_all ~/projects/myapp将在~/projects/myapp下转换整个项目树

请参阅QMAKE2CMAKE有关更多详细信息

最新更新