Qt 编译fcitx-qt5 插件支持中文输入法
前言
在Linux系统上会遇到Qt开发的程序无法输入中文的情况,原因就是因为输入法框架是采用的fcitx,而不是ibus,Qt默认只支持ibus输入法框架。在Qt/5.15.2/gcc_64/plugins/platforminputcontexts/
路径下可以看到,只有libibusplatforminputcontextplugin.so
,没有libfcitxplatforminputcontextplugin.so
。而本文的目的就是编译出libfcitxplatforminputcontextplugin.so
动态库,使其支持fcitx输入法框架,从而支持输入中文。
下载源代码
git clone https://github.com/fcitx/fcitx-qt5
注意,是fcitx-qt5、fcitx-qt5、fcitx-qt5,fcitx 组织下还有一个容易混淆的仓库,请仔细区分。
构建编译fcitx-qt5
首先需要安装必备的依赖环境:
sudo apt install extra-cmake-modules
在这之前,最好设置Qt的环境变量:
export PATH=$PATH:/home/leo/Qt/5.15.2/bin/
不设置的话也行,可以 cmake 手动指定Qt目录。
如果你是 Qt 6,那么还需要修改一下fcitx-qt5的CMakeLists.txt
文件:
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目录:
mkdir build
cd build
执行cmake命令
cmake .. -DENABLE_LIBRARY=false
执行make
make
在build目录下的qt5/platforminputcontext
就有需要的libfcitx5platforminputcontextplugin.so
插件动态库了。
安装(可选)
make install
命令会将插件装到指定qt环境下的plugins目录下
$ make install
[ 4%] Automatic MOC for target fcitxplatforminputcontextplugin
[ 4%] Built target fcitxplatforminputcontextplugin_autogen
[100%] Built target fcitxplatforminputcontextplugin
Install the project...
-- Install configuration: ""
-- Installing: /home/leo/Qt/5.15.2/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so
-- Set runtime path of "/home/leo/Qt/5.15.2/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so" to ""
也可自行将动态库拷贝到对应路径下或者自己的Qt程序打包路径下。
错误解决
找不到 FcitxConfig.cmake
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” 参数
cmake .. -DENABLE_LIBRARY=false
找不到 ECMConfig.cmake
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
参数
cmake .. -DENABLE_LIBRARY=false -DQt5_DIR=[Qt目录]/lib/cmake/Qt5
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!