Qt 编译fcitx-qt5 插件支持中文输入法

前言

在Linux系统上会遇到Qt开发的程序无法输入中文的情况,原因就是因为输入法框架是采用的fcitx,而不是ibus,Qt默认只支持ibus输入法框架。在Qt/5.15.2/gcc_64/plugins/platforminputcontexts/路径下可以看到,只有libibusplatforminputcontextplugin.so,没有libfcitxplatforminputcontextplugin.so。而本文的目的就是编译出libfcitxplatforminputcontextplugin.so动态库,使其支持fcitx输入法框架,从而支持输入中文。

下载源代码

bash 复制代码
git clone https://github.com/fcitx/fcitx-qt5

注意,是fcitx-qt5、fcitx-qt5、fcitx-qt5,fcitx 组织下还有一个容易混淆的仓库,请仔细区分。

构建编译fcitx-qt5

首先需要安装必备的依赖环境:

复制代码
sudo apt install extra-cmake-modules

在这之前,最好设置Qt的环境变量:

ruby 复制代码
export PATH=$PATH:/home/leo/Qt/5.15.2/bin/

不设置的话也行,可以 cmake 手动指定Qt目录。

如果你是 Qt 6,那么还需要修改一下fcitx-qt5的CMakeLists.txt文件:

vbnet 复制代码
option(ENABLE_QT4 "Enable Qt 4" On)
option(ENABLE_QT5 "Enable Qt 5" Off)
option(ENABLE_QT6 "Enable Qt 6" On)
option(BUILD_ONLY_PLUGIN "Build only plugin" Off)
option(BUILD_STATIC_PLUGIN "Build plugin as static" Off)
option(WITH_FCITX_PLUGIN_NAME "Enable plugin name with fcitx" On)

ENABLE_QT5改为off,ENABLE_QT6改为on

然后创建一个build目录:

bash 复制代码
mkdir build
cd build

执行cmake命令

ini 复制代码
cmake .. -DENABLE_LIBRARY=false

执行make

go 复制代码
make

在build目录下的qt5/platforminputcontext就有需要的libfcitx5platforminputcontextplugin.so插件动态库了。

安装(可选)

make install 命令会将插件装到指定qt环境下的plugins目录下

go 复制代码
make install

也可自行将动态库拷贝到对应路径下或者自己的Qt程序打包路径下。

错误解决

找不到 FcitxConfig.cmake

swift 复制代码
CMake Error at CMakeLists.txt:36 (find_package):
By not providing "FindFcitx.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "Fcitx", but
CMake did not find one.

Could not find a package configuration file provided by "Fcitx" (requested
version 4.2.8) with any of the following names:

  FcitxConfig.cmake
  fcitx-config.cmake

Add the installation prefix of "Fcitx" to CMAKE_PREFIX_PATH or set
"Fcitx_DIR" to a directory containing one of the above files. If "Fcitx"
provides a separate development package or SDK, be sure it has been installed.

 -- Configuring incomplete, errors occurred!
See also "/media/veracrypt/mythware/gerrit/QT/ClassroomManagement/ClassroomManagement/Submodules/fcitx/fcitx-qt5/build/CMakeFiles/CMakeOutput.log".

解决方案

命令行增加 "-DENABLE_LIBRARY=false" 参数

ini 复制代码
cmake .. -DENABLE_LIBRARY=false

找不到 ECMConfig.cmake

sql 复制代码
CMake Error at CMakeLists.txt:8 (find_package):
Could not find a package configuration file provided by "ECM" (requested
version 1.4.0) with any of the following names:

  ECMConfig.cmake
  ecm-config.cmake

Add the installation prefix of "ECM" to CMAKE_PREFIX_PATH or set "ECM_DIR"
to a directory containing one of the above files. If "ECM" provides a
separate development package or SDK, be sure it has been installed.

-- Configuring incomplete, errors occurred!
See also "/home/shana/fcitx-qt5/build/CMakeFiles/CMakeOutput.log".

解决方案:

安装extra-cmake-modules包:

复制代码
sudo apt install extra-cmake-modules

找不到 Qt5Config.cmake

解决方案:

命令行增加-DQt5_DIR=[Qt目录]/lib/cmake/Qt5参数

ini 复制代码
cmake .. -DENABLE_LIBRARY=false -DQt5_DIR=[Qt目录]/lib/cmake/Qt5
相关推荐
__beginner__10 小时前
CentOS 磁盘占用异常排查与处理手册(df 高、du/ncdu 低)
linux·运维·centos
坚持就完事了11 小时前
YARN资源管理器
大数据·linux·hadoop·学习
Joseph Cooper11 小时前
Linux regmap 子系统实战:在驱动中 dump PMIC 寄存器定位供电问题
linux·运维·服务器
计算机安禾12 小时前
【Linux从入门到精通】第35篇:容器化技术预备——Docker安装与基本概念
linux·运维·docker
子木HAPPY阳VIP12 小时前
信创UOS,Docker 完整操作部署(Dockerfile部署方式)&排错整合
linux·运维·redis·nginx·docker·容器·tomcat
瞎折腾啥啊12 小时前
vcpkg与CMake
linux·c++·cmake·cmakelists
AOwhisky12 小时前
Kubernetes调度与服务暴露:从“定时任务”到“服务发现”的完全指南
linux·运维·云原生·容器·kubernetes·服务发现
hahaha 1hhh12 小时前
中文乱码 ubuntu autodl
linux·运维·前端
Ulyanov12 小时前
基于 Python 的三维动态导弹攻防演示系统设计与实现:从架构到实战的深度剖析
开发语言·python·qt·架构·雷达电子对抗
计算机安禾12 小时前
【Linux从入门到精通】第37篇:NFS网络文件系统——无状态的数据共享
linux·网络·php