# 搭建开发环境:Qt Creator

Qt Creator 是 Qt 提供的集成开发环境,但其本身并不依赖于 Qt 使用。可以通过配置开发套件 (Kit) 的方式来组合使用任意的编译器和构建工具。

下面讲解如何在 Qt Creator 中通过配置开发套件搭建 LarkSDK 开发环境。此处仍然假定读者已准备好不同平台下合适的编译器和必要的工具。例如在 Linux 下可以选择 GCC 编译器,在 Windows 下既可以使用 MSVC,当然也可以借助 MinGW 环境使用 GCC 等。

对 Qt Creator 的版本,理论上也没有要求。读者可以根据自身条件和实际情况,自行选用自己习惯的版本。安装 Qt Creator 的流程不再赘述。

# Linux

TIP

以下操作以 Ubuntu 20.04 操作系统为例,假定已经安装 GCC 和 CMake。

# 配置开发套件 (Kits)

启动 Qt Creator,在菜单栏中点击工具 (Tools),在弹出的菜单中点击选项 (Options)

qtcreator-tools-options

在弹出的对话框左边选择套件 (Kits)

qtcreator-kit-default

Qt Creator 安装时通常都会添加一个默认的 桌面 (Desktop) 套件。并会尝试自动检测机器上的编译环境,包括已安装的 Qt、编译器、调试器和 CMake 等。因此,建议先安装 CMake 和 GCC 再安装 Qt Creator。默认套件将自动扫描系统以正确配置编译器和 CMake 路径。配置完毕后参考下图。若编译器和 CMake 没有正确配置,需要点击 Options 对话框(上图)中 CompilersCMake 选项卡,分别进行手动配置。

qtcreator-kit-gcc-cmake

注意这里我们可以考虑把 Qt version 改为 None,表示我们配置的 Kit 不使用 Qt。当然如果不管这里也不会有什么不得了的影响。

最后,如果你愿意,可以将配置好的套件改个名称。如果你在本机需要管理不同的开发套件(例如你还有别的 Kit 负责 Qt 开发),可以选择定义一个合适的名称以区分。

# 创建工程

新建工程,在 Non-Qt Project 里面,选择 Plain C++ Application 以创建一个纯 C++ 工程。

qtcreator-new-project

创建工程 hello-larksdk,点击下一步。

qtcreator-new-project-1

构建系统选择 CMake,点击下一步。

qtcreator-new-project-2

选择我们事先配置好的构建套件,点击下一步。

qtcreator-new-project-3

确认信息无误之后,点击完成。

qtcreator-new-project-4

至此项目成功建立,下面开始配置 LarkSDK。

# 工程配置

首先确保 LarkSDK 已安装。使用 CMake 作为构建工具时,Qt Creator 并不提供完全图形化的项目配置方式,需要手动编辑 CMakeLists.txt 文件。

TIP

假设 LarkSDK 被安装在 /path/to/larksdk 目录下。

修改 CMakeLists.txt 的内容如下:

# 最低 CMake 版本要求,建议 3.12
cmake_minimum_required (VERSION 3.12)

project (hello-larksdk LANGUAGES CXX)

set (CMAKE_CXX_STANDARD 11)
set (CMAKE_CXX_STANDARD_REQUIRED ON)

# 设置 LarkSDK 的安装路径
set (LARKSDK_PATH "/path/to/LarkSDK")

# 通过 CMake 设置程序运行时所需动态库的查找目录
set (CMAKE_BUILD_RPATH "${LARKSDK_PATH}/lib")

# 工程以单个可执行程序 hello-larksdk 为构建目标,且只有一个 main.cpp 文件
add_executable (hello-larksdk main.cpp)

# 为构建目标配置包含目录
target_include_directories (hello-larksdk PUBLIC "${LARKSDK_PATH}/include/lark-util")
target_include_directories (hello-larksdk PUBLIC "${LARKSDK_PATH}/include/lark-core")
target_include_directories (hello-larksdk PUBLIC "${LARKSDK_PATH}/include/lark-gui")

# 为构建目标配置静态库查找目录
target_link_directories (hello-larksdk PUBLIC "${LARKSDK_PATH}/lib")

# 为构建目标指定需要连接的静态库和动态库
# 其中 larkgui, larkcore, larkutil 是 LarkSDK 提供的库
# GL, EGL 将在上面配置的动态库查找目录里寻找
# 其余为系统库,LarkSDK 要求这些库已经预先安装在系统上
target_link_libraries (hello-larksdk PUBLIC
    larkgui larkcore larkutil
    GL EGL
    pthread dl X11 wayland-client wayland-cursor xkbcommon
)

TIP

后续 LarkSDK 将提供 Qt Creator 插件以简化配置流程。

# 编写程序

配置完毕后我们就可以编写源代码。如果 CMake 配置无误,此时 Qt Creator 应该已经可以使用代码自动提示、头文件跳转等功能。

TIP

如果发现 Qt Creator 出现代码自动完成不能工作,但头文件跳转正常等情况,可以尝试从菜单栏点击 Help -> About Plugins,在弹出的对话框中取消勾选 ClangCodeModel (参考这里 (opens new window))。

qtcreator-disable-clangcodemodel

我们构建一个简单的窗体,并在正中央通过标签组件显示一段文本,同时窗体根组件应用了弹性布局,使得文本始终保持在窗体的正中央。代码如下:

#include <lwindowapplication.h>
#include <lwindow.h>
#include <llabel.h>
#include <lflexlayout.h>

int main()
{
    LWindowApplication app;
    LWindow w(400, 300);
    w.rootComponent()->setLayout(LFlexLayout());
    LLabel label("Hello LarkSDK!", w.rootComponent());
    w.show();
    return app.exec();
}

构建并执行,效果如图。

qtcreator-simple-window