KDE框架的学习以及CMake的使用

C++
Article Directory
  1. 1. 写在前面
  2. 2. Hello World

This article was last updated on <span id="expire-date"></span> days ago, the information described in the article may be outdated.

写在前面

昨天晚上看了一下KDE的框架,想着看一看如何写个桌面小部件玩。跟着官方的教程走先写一个消息框,VS Code没有报错,很高兴,结果编译过不去。研究了一下发现是g++不会递归搜索/usr/include/找不到头文件,只好顺便看一下CMake但是好难啊,不会。

今晚又研究了一下,算是可以成功运行了。开一篇记录写部件的过程。挖的坑+1嗷。

Hello World

首先贴一下直接编译的错误

main.cpp的代码就是 官网 的代码,没啥好说的。

1
2
3
4
5
6
7
8
9
10
11
#include <QApplication>
#include <KMessageBox>

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
KGuiItem yesButton("Hello", QString(),
"This is a toltip",
"This is a WhatsThis help text.");
return KMessageBox::questionYesNo(0, "Hello World", "Hello", yesButton) == KMessageBox::Yes ? EXIT_SUCCESS : EXIT_FAILURE;
}

这里注意一下目录的结构,放一张VS Code的截图

实际上好多都是自动生成的,需要手打的只有main.cpp还有CMakeLists.txt

然后就是CMakeLists.txt的内容了。这里是比较坑的,因为寻找头文件的路径需要用到CMakefind_package函数,然后根据网上搜过来的内容,CMake是有内置好的规则的,比如找QtWidgets,就直接写个find_package(QtWidgets),然后CMake就根据内置好的规则去找头文件路径。那么如何知道有哪些内置规则呢?我目前发现似乎只能去CMake官网看,然后就是自己去/usr/lib/cmake里面找。

暂时不知道有没有什么好的方法,就先这样吧,能跑就行。这里是CMakeLists.txt的内容

1
2
3
4
5
6
7
8
9
10
11
12
13
cmake_minimum_required(VERSION 3.0)	# cmake 最小版本要求

project(test) # 项目名称,这里还可以把版本号加上
# QApplication 是在 Qt5Widgets 里面的,我直接暴力 find /usr/include/qt -name "QApplication" 找到的
find_package(Qt5Widgets REQUIRED Qt5Core Qt5Gui)
find_package(KF5WidgetsAddons)

# 设置需要编译的可执行文件,前面一个是生成文件的名称,后面一个是文件的地址
add_executable(main src/main.cpp)
# 这个是需要链接的库,其实也就是 main 的需要链接的依赖,不加的话编译时还是回报找不到 QApplication 的错误
target_link_libraries(main
Qt5::Widgets
KF5::WidgetsAddons)

然后执行下面的命令就好了

1
2
3
4
mkdir build #文件夹存在就跳过
cd build
cmake ..
make

就会看到下面的日志

运行生成好的main,就可以看到窗口了

Author: Syize

Permalink: https://blog.syize.cn/2022/03/13/kde-framework-with-cmake/

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Syizeのblog

Comments