编译 CTK(Win10 + Qt 5.14.0 + VS2015)

网上有很多讲解如何编译 CTK 的文章,本文也是对多篇文章的综合和整理。
编译 CTK,主要就是解决下面几个问题:

  • Qt 版本
  • Qt 路径
  • CTKData 路径
  • CTK 模块
  • CTK 安装路径

下载 CTK 和 CTKData 源码

如果网速好的话,推荐先安装 Git,这样在编译 CTK 的过程中,对于一些依赖的程序包,CMake 会自动调用 Git 进行下载,比如 CTKData。但国内的网络环境,像移动、电信这样的网络状况,我们还是不必期望太高,老老实实自己手动下载更好。

下载之后,将 CTK-master.zipCTKData-master.zip 分别解压到 D:D:\CTK-masterD:\CTKData-master 文件夹。

编译 CTK

首先下载 CMake:cmake-3.18.0-win32-x86.zip
将下载的 cmake-3.18.0-win32-x86.zip 解压到 D:\cmake-3.18.0-win32-x86 文件夹。

D: 盘创建 D:\CTK-Build 文件夹,用于存放编译后的 CTK 文件。

运行 D:\cmake-3.18.0-win32-x86\bin\cmake-gui.exe,打开 CMake。点击 Browse Source… 按钮,选择 D:/CTK-master 文件夹,再点击 Browse Build… 按钮,选择 D:/CTK-Build 文件夹,如图:

在这里插入图片描述
点击 Configure 按钮,在弹出的编译器选择框中选择 Visual Studio 14 2015,平台选择 x64,如图:

在这里插入图片描述
注意:平台的选择一定要与接下来的 Qt 相对应。比如,后面 Qt 准备选择 msvc2015_64,所以此处必须选择 x64 平台。

点击 Finish 按钮,完成配置。

错误 1:Qt 版本

此时会遇到第一个错误:Qt4 was not found on your system.

在这里插入图片描述
这是由于电脑上安装的是 Qt5,而 CTK 默认配置的是 Qt4。CMake 找不到 Qt4,所以报错。

网上文章解决 CTK 编译错误的方法,大部分都是修改配置文件。本文将采取直接在 CMake 界面上修改配置项的方法。

选中 [Grouped] 和 [Advanced],然后展开 CTK 节点,将 CTK_QT_VERSION 配置项的值由 4 改成 5

重新点击 Configure 按钮。

错误 2:Qt 路径

接下来遇到第二个错误:Could not find a package configuration file provided by "Qt5"

在这里插入图片描述
这是 CMake 找不到 Qt 5 程序包,我们需要手工指定。

展开 Ungrouped Entries 节点,设置 Qt5_DIR 为正确的 Qt 库路径。一般是类似这样的路径:C:/Qt/Qt5.14.0/5.14.0/msvc2015_64/lib/cmake/Qt5

在这里插入图片描述
注意:此处选择的 Qt 库路径,与第一次点击 Configure 按钮时,配置的编译器和平台要一致。

重新点击 Configure 按钮。

错误 3:CTKData 路径

接下来又会遇到第三个错误:could not find git for clone of CTKData

在这里插入图片描述
如果最初安装了 Git,此处 CMake 应该会调用 Git 自动下载 CTKData。(没有亲自实践)

由于本文采用的是手动下载的方法,所以此处也需要手动指定 CTKData 路径。

点击 Add Entry 按钮,打开 Add Cache Entry 对话框,添加 CTKData_DIR 配置项,路径指定为 D:/CTKData-master

在这里插入图片描述
点击 OK 按钮,完成添加。

在这里插入图片描述
重新点击 Configure 按钮。

此时顺利完成配置,在底部出现 Configuring done

在这里插入图片描述

选择要编译的模块

默认配置,只会编译 CTK_LIB_Core 模块。如果我们要生成其它模块,需要手动选择,比如 Widgets 或 Plugin Framework 等。

展开 CTK 节点,选中下列配置项:

  • CTK_ENABLE_PluginFramework
  • CTK_ENABLE_Widgets
  • CTK_LIB_PluginFramework
  • CTK_LIB_Widgets
  • CTK_PLUGIN_org.commontk.configadmin
  • CTK_PLUGIN_org.commontk.eventadmin
  • CTK_PLUGIN_org.commontk.log
  • CTK_PLUGIN_org.commontk.metatype

另外,一般情况不需要编译测试模块:展开 Ungrouped Entries 节点,取消选中 BUILD_TESTING

重新点击 Configure 按钮,配置完成,在底部出现 Configuring done

然后点击 Generate 按钮,在底部出现 Generating done,同时 Open Project 按钮变为可用状态。

在这里插入图片描述

编译程序

点击 Open Project 按钮,启动 Visual Studio,刚才生成的解决方案会自动打开。

解决方案资源管理器 里,在 ALL_BUILD 项目名称上点击鼠标右键,在弹出菜单上选择 [生成],开始编译。

在这里插入图片描述
大约 8 分钟左右,编译完成(依电脑性能不同,所需时间可能不同)。在底部的 输出 窗口,显示:

========== 生成: 成功 2 个,失败 1 个,最新 0 个,跳过 0 个 ==========

打开 错误列表 窗口,会看到下面这样的错误信息:
在这里插入图片描述

注:如果错误列表窗口里没有错误信息,那么重复上面的操作,再生成一次。

双击错误信息,打开 ctkLDAPExpr.cpp 文件,光标会自动定位到 623 行。

在这里插入图片描述
去掉该行后面的一对括号,重复上面的操作,再生成一次。

在这里插入图片描述
这回输出窗口显示:失败 0 个。

打开 D:\CTK-Build\CTK-build\bin\Debug 文件夹,可见所需文件已经编译成功。

在这里插入图片描述

安装 CTK

这时如果仔细查看输出窗口,会在生成成功的提示信息上面发现这样一行:

No install step for ‘CTK’

这说明 CTK 没有安装。这是什么原因呢?

我们单独生成 INSTALL 项目,会发现一堆莫名其妙的错误:

在这里插入图片描述
再仔细查看输出窗口,会发现这样的信息:

CMake Error at cmake_install.cmake:36 (file):
file cannot create directory: C:/Program Files (x86)/CTK/lib/ctk-0.1/CMake.
Maybe need administrative privileges.

不能创建目录: C:/Program Files (x86)/CTK/lib/ctk-0.1/CMake. 可能需要管理员权限.

这是无法在 C: 盘创建安装目录。(Win10 对系统盘的权限控制是很严格的。)

回到 CMake 窗口,展开 CMAKE 节点,找到 CMAKE_INSTALL_PREFIX 项,可见其默认值为 C:/Program Files (x86)/CTK

修改 CMAKE_INSTALL_PREFIX 的值为 D:/CTK-Install,然后重新点击 ConfigureGenerate 按钮,窗口底部出现 Configuring doneGenerating done

在这里插入图片描述
回到 Visual Studio 窗口,右键点击 INSTALL 项目,选择弹出菜单的 [生成] 项,重新生成安装项目。

这回错误列表里没有错误了,输出窗口也显示“失败 0 个”,但往上看仍然有 No install step for 'CTK' 的提示,查看 D:\CTK-Install 文件夹,里面也没有我们需要的文件。

在这里插入图片描述
这说明仍然没有安装成功。

其实在 SuperBuild.cmake 文件里,INSTALL_COMMAND 默认值是 "",我们必须手工修改一下。

用记事本打开 D:\CTK-master\SuperBuild.cmake 文件,在文件底部找到 INSTALL_COMMAND "" 一行,修改成 INSTALL_COMMAND ${_INSTALL_CMD} 并保存。

在这里插入图片描述
再回到 Visual Studio,再次生成 INSTALL 项目。这回再查看 D:\CTK-Install 文件夹,可见里面包含了 includelib 两个子文件夹,include 文件夹里是 CTK 的头文件,lib 文件夹里是 .lib 和 .dll 文件。

在这里插入图片描述

参考

  • 12
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值