Qt Creator 4.13中的CMake项目配置

目录

Qt Creator 4.13 之前的版本

Qt Creator 4.13

开始构建

自动创建的构建目录


本文翻译自:CMake Project Configuration in Qt Creator 4.13
原文作者:Cristian Adam
校审:Haipeng Yu


在Qt Creator中配置中型到大型CMake项目可能是一个挑战。这是因为您需要给CMake传递正确配置项目的选项太多了。


让我们以Qt Creator的CMake为例。不同于qmake构建,CMake构建可配置你想要构建的插件。


假设您只想选择CMake项目管理器、选择Git源代码控制器、只用C++以及只针对桌面平台版本构建。


这将意味着以下CMake选项将被设置为OFF:

-DBUILD_PLUGIN_ANDROID=OFF
-DBUILD_PLUGIN_AUTOTEST=OFF
-DBUILD_PLUGIN_AUTOTOOLSPROJECTMANAGER=OFF
-DBUILD_PLUGIN_BAREMETAL=OFF
-DBUILD_PLUGIN_BAZAAR=OFF
-DBUILD_PLUGIN_BOOT2QT=OFF
-DBUILD_PLUGIN_CLEARCASE=OFF
-DBUILD_PLUGIN_CVS=OFF
-DBUILD_PLUGIN_EMACSKEYS=OFF
-DBUILD_PLUGIN_FAKEVIM=OFF
-DBUILD_PLUGIN_GENERICPROJECTMANAGER=OFF
-DBUILD_PLUGIN_HELLOWORLD=OFF
-DBUILD_PLUGIN_INCREDIBUILD=OFF
-DBUILD_PLUGIN_IOS=OFF
-DBUILD_PLUGIN_MARKETPLACE=OFF
-DBUILD_PLUGIN_MCUSUPPORT=OFF
-DBUILD_PLUGIN_MERCURIAL=OFF
-DBUILD_PLUGIN_MESONPROJECTMANAGER=OFF
-DBUILD_PLUGIN_NIM=OFF
-DBUILD_PLUGIN_PERFORCE=OFF
-DBUILD_PLUGIN_PYTHON=OFF
-DBUILD_PLUGIN_QBSPROJECTMANAGER=OFF
-DBUILD_PLUGIN_QMLDESIGNER=OFF
-DBUILD_PLUGIN_QMLJSEDITOR=OFF
-DBUILD_PLUGIN_QMLJSTOOLS=OFF
-DBUILD_PLUGIN_QMLPREVIEW=OFF
-DBUILD_PLUGIN_QMLPREVIEWPLUGIN=OFF
-DBUILD_PLUGIN_QMLPROFILER=OFF
-DBUILD_PLUGIN_QMLPROJECTMANAGER=OFF
-DBUILD_PLUGIN_QNX=OFF
-DBUILD_PLUGIN_QTQUICKPLUGIN=OFF
-DBUILD_PLUGIN_REMOTELINUX=OFF
-DBUILD_PLUGIN_SERIALTERMINAL=OFF
-DBUILD_PLUGIN_STUDIOWELCOME=OFF
-DBUILD_PLUGIN_SUBVERSION=OFF
-DBUILD_PLUGIN_WEBASSEMBLY=OFF
-DBUILD_PLUGIN_WINRT=OFF
-DBUILD_EXECUTABLE_QML2PUPPET=OFF
-DBUILD_EXECUTABLE_QTPROMAKER=OFF
-DBUILD_EXECUTABLE_WINRTDEBUGHELPER=OFF

在过去(在Qt Creator 4.0版本之前),您只能通过命令行输入CMake配置参数,才可以得到一个正确配置的项目!


Qt Creator 4.13 之前的版本

在Qt Creator中有三种方法可以使用以上参数来配置CMake项目:

1.    使用能配置工程的命令行脚本,然后将其导入Qt Creator。
2.    创建一个Qt Creator Kit,在CMake Configuration中包含以上配置参数。

3.    手动选择CMake项目设置中的所有选项。这将添加对应的值到CMakeLists.txt.user文件中。


如果您使用脚本来配置项目(或cmake-gui),然后决定更改Qt Creator的设置,您可能会遇到以下对话框:


Qt Creator 4.13

上面的对话框在Qt Creator 4.13已经被去掉,因为Qt Creator不再使用CMakeLists.txt.user文件来存储单独的CMake选项。它只存储初始CMake参数,后续更改的参数通过-D<option>=<value> 传递到CMake,它将选项存储在CMakeCache.txt文件中。


这意味着,如果您删除构建目录,所有不属于Initial CMake parameters的自定义设置都将消失。

这个配置对话框看起来像这样:


您可以从Build菜单配置项目,然后 Run CMake,像如下所示:


请注意Clear CMake Configuration 菜单条目,它将删除CMakeCache.txt文件,更改Initial CMake parameters 的设置后需要执行这样的操作。这个操作会隐式导致完全重新编译。

Qt Creator中较少的构建配置会影响构建时间(Windows 10, Intel i9 10核处理器):

 

开始构建

您可以删除整个构建目录,或利用Qt Creator的构建菜单:

1.    Qt Creator的Clean project菜单。这将执行clean ninja目标,移除build文件(*.obj、*.dll、* . exe)

2.    Clear CMake Configuration。这将删除CMakeCache.txt文件。

然后,您可以通过运行CMake并构建项目"Qt Creator",它的行为应该已经创建了构建目录。


自动创建的构建目录

Qt Creator在默认情况下为CMake设置以下选项:

[x] Autorun CMake  
[ ] Auto-create build directories

这意味着每当键入和保存您的CMakeLists.txt时,CMake将配置项目。我个人习惯不加思考地按下Ctrl-S键,当CMake在后台运行30秒时,我们将变得很急躁。


第二个选项意味着Qt Creator首先将在一个临时目录中配置项目,当您构建项目时,它将从头开始并再次使用构建目录来配置项目。
我喜欢如下的另外一种CMake配置,CMake项目配置更少、CMake配置运行起来没有“惊喜”: