参考博客: https://blog.51cto.com/u_15127574/3697131
在我的debian11上编译的Qt程序无法用fcitx(搜狗输入法)输入中文。
看了别人的博客,需要一个fcitx5-qt
的包,源代码仓库:https://github.com/fcitx/fcitx5
网上也没找到现成的包可以用,只能自己编译。
这里给一个我编译好的Qt6、Qt5的包:https://github.com/sixsixQAQ/fcitx5-qt
如果在你的系统不能用,可能是因为不兼容,请尝试自己编译。
使用
把那个libfcitx5platforminputcontextplugin.so
放到下面的路径:
<你的Qt安装目录>/gcc_64/plugins/platforminputcontexts/
比如我的Qt6,放置路径就是:
/opt/qt/6.3.1/gcc_64/plugins/platforminputcontexts/
然后设置权限755即可。
chmod 755 libfcitx5platforminputcontextplugin.so
重新构建你的Qt程序,就能用fcitx输入中文了。
(我装的fcitx,用的搜狗输入法)
编译
我们需要安装一个fcitx5-qt
的包,github可找到源代码。
下载源代码后进入
git clone https://github.com/fcitx/fcitx5-qt.git
cd fcitx5-qt
每个人的环境多少都会有点不一样,下面给出我遇到的问题和解决过程。
第1次构建,失败
尝试第一次构建
mkdir build && cd build
cmake ../
第一次报错,应该会提示你缺少Fctix5Utils
。
用apt搜一下看
$ apt search Fcitx5Utils
libfcitx5utils-dev - Fcitx Input Method Framework v5 (utils library dev files)
libfcitx5utils2 - Fcitx Input Method Framework v5 (utils library)
我们安装第一个dev的开发包:
apt install libfcitx5utils-dev
第2次构建,失败
然后回到我们的build目录,先清下缓存再构建
rm -rf *
cmake ../
结果应该又会报错,个人情况不同,根据报错提示,我们打开顶级CMakeLists.txt
看看它的逻辑(需要学一点CMake):
$vim ../CMakeLists.txt
cmake_minimum_required(VERSION 3.16)
project(fcitx5-qt VERSION 5.0.15)
set(FCITX5_QT_VERSION ${PROJECT_VERSION})
set(REQUIRED_QT4_VERSION 4.8.0)
set(REQUIRED_QT5_VERSION 5.1.0)
set(REQUIRED_QT6_VERSION 6.0.0)
find_package(ECM 1.4.0 REQUIRED)
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
option(ENABLE_QT4 "Enable Qt 4" Off)
option(ENABLE_QT5 "Enable Qt 5" Off)
option(ENABLE_QT6 "Enable Qt 6" ON)
option(BUILD_ONLY_PLUGIN "Build only plugin" ON)
option(BUILD_STATIC_PLUGIN "Build plugin as static" Off)
option(WITH_FCITX_PLUGIN_NAME "Enable plugin name with fcitx" On)
......
- 意思是Qt6、Qt5、Qt4是可选构建的,不需要的就把它改成OFF,否则就会构建,然而比如你要构建Qt4,但是却没装Qt4,那就无法构建。我只装了Qt6,所以这里只开启Qt6。
- 下面还有个
BUILD_ONLY_PLUGIN
选项,要打开,设置成ON。 - 注意到还有个
BUILD_STAIC_PLUGIN
选项,由于不开它也能编译,就先不动了。
第3次构建,失败
设定好需要的选项后,再次清下缓存,开始构建:
rm -rf *
build ../
结果又报错,提示找不到Qt6Config.cmake
(Qt4、Qt5同理),按照那个提示,设定环境变量CMAKE_PREFIX_PATH
为你的Qt按照路径。
export CMAKE_PREFIX_PATH="/software/lib/qt/6.3.1/gcc_64"
第4次构建,成功
清下缓存再构建,编译成功了。
rm -rf *
cmake ../
cmake --build .
看提示进到编译结果目录,里面有个libfcitx5platforminputcontextplugin.so
,这就是我们要的。