将QMake项目转换为CMake

时间:2017-06-23 11:21:56

标签: c++ qt cmake qmake

我最近开始更新我的C ++知识(没有使用它10年〜)。我选择使用QtCreator,因为我想了解更多关于Qt的信息,我只试过一次。

现在,我创建了一个qmake项目,它一切正常,但我也想了解cmake,我想为此目的将项目转换为cmake。

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

现在,我想请你帮我把我的qmake .pro文件移到cmake CMakeLists.txt,这很简单。

RewriteEngine On

RewriteCond %{HTTP_HOST} !^(?:www\.)?mysecondwebsite\.com$ [NC]
RewriteCond %{THE_REQUEST} !\s/+\sHTTP [NC]
RewriteCond %{THE_REQUEST} !\s/+contatti/ [NC]
RewriteRule . https://mysecondwebsite.com%{REQUEST_URI} [R=301,L,NE]

And clear your browser cache before testing.

我不喜欢"即插即用"解决方案通常,但在我深入了解cmake之前,我希望将其转换为能够构建它。

至于构建,这是一个不同的问题,但也许有人也可以回答这个问题 - 我是否需要在QtCreator中进行任何更改以使其在我的项目中使用cmake而不是qmake(或者理想情况下,将它们并排放置,以便能够在cmake和qmake之间切换)?

我已经在Build& amp;中添加了CMake运行 - > CMake(它被自动检测)。

2 个答案:

答案 0 :(得分:3)

qmake和cmake之间Qt编程的区别在于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项目

答案 1 :(得分:0)

或者,对于这样一个简单的项目(一个可执行文件,没有库),您可以使用我的脚本 cmake-project,它相当于 qmake -project : https://github.com/KDAB/KDToolBox/tree/master/qt/cmake-project

只需在源目录中运行它,它就会生成一个 CMakeLists.txt 来将所有源构建为单个可执行文件。