前言
在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