阅读:16789回复:10

Yong输入法的编译方法

楼主#
更多 发布于:2016-08-28 16:40
依赖:
小小输入法在linux下开发和编译。没有测试过在其他操作系统下进行编译。
需要是64位系统,32位系统某些模块就没法编译,需要自己手工调整。
gcc 编译器,需要支持c11以上版本。clang应该也行。编译windows相关需要mingw-w64工具链。
nodejs需要0.12版本及以上。
系统中需要安装好相关的开发环境,比如gtk4-devel,gtk3-devel,gtk2-devel,ibus-devel,libxkbcommon-devel(debian下是libgtk-4-dev libgtk-3-dev libgtk2.0-dev libxkbcommon-dev libibus-1.0-dev)。
准备好build.js,在https://github.com/dgod/build.js

编译:

由于git不能存储空目录,所以下载到的源代码缺少一些目录结构,编译前需要先创建好一些目录
mkdir - p {llib,cloud,gbk,mb,vim}/{l32,l64}
mkdir -p {im,config}/{l32-gtk3,l32-gtk2,l64-gtk3,l64-gtk2}
mkdir -p im/gtk-im/{l32-gtk3,l32-gtk2,l64-gtk3,l64-gtk2}
mkdir -p im/IMdkit/{l32,l64}

编译所有相关内容
node build.js

只编译linux相关内容

node build.js l32 l64

需要qt5模块的,这个编译某些地方是写死了路径的,在某些系统上可能无法编译通过,需要自己调整build.txt。(需要安装包qt5-qtbase-devel,qt5-qtbase-private-devel,debian下是qtbase5-dev,qtbase5-private-dev)

node build.js -C im/qt5-im l32-qt5 l64-qt5
代码同样支持qt6
mkdir im/qt5-im/{l32-qt6,l64-qt6,l32-qt5,l64-qt5}
node build.js -C im/qt5-im l64-qt5

linux下打包成7z:
需要系统中安装有p7zip压缩工具。
node build.js -C install copy dist
沙发#
发布于:2022-05-23 08:41
非常感谢 fireflyoo 您在AUR上提交的PKGBUILD,不过不知我们的系统有什博差别,在我这边编译不过,首先git地址连接不了,于是我改成了周大的官方地址,然后官方的build.js也获取不到相关文件,于是我直接复制了build.js文件,但makepkg时又提示似乎是找不到QT目录,qt5-base是装了的。
板凳#
发布于:2018-08-07 11:40
可以把這篇移到“幫助”版塊嗎?
地板#
发布于:2017-11-01 14:58
真是天底下好事多多
4楼#
发布于:2017-03-15 16:15
多谢老大指点,已经编译成功。有时间好好学习下您的源码,有不明白的再向您请教。
5楼#
发布于:2017-03-13 10:23
gnuxyong:原来应该氏libibus-1.0-dev。不过还氏编译出错。
mate1604@wdnb00:/tmp/yong$ node build.js l32
gcc -m32 -march=i686 -I/tmp/yong/llib -I/tmp...
回到原帖
新加的代码忘了上传了,你更新一下代码吧
6楼#
发布于:2017-03-13 00:45
原来应该氏libibus-1.0-dev。不过还氏编译出错。
mate1604@wdnb00:/tmp/yong$ node build.js l32
gcc -m32 -march=i686 -I/tmp/yong/llib -I/tmp/yong/im -I/tmp/yong/im/IMdkit -DCFG_XIM_IBUS `pkg-config --cflags ibus-1.0` -DCFG_XIM_FBTERM -I/tmp/yong/im/fbterm -DL_CALL_GLIB_SERVER -Wall -g -O2 -fms-extensions -fno-strict-aliasing -pipe -I/tmp/yong/include -I/tmp/yong/common `pkg-config --cflags gtk+-2.0` -c /tmp/yong/im/ui.c -o ui.o
/tmp/yong/im/ui.c:61:22: fatal error: ui-timer.c: 没有那个文件或目录
compilation terminated.
该怎么调整,屮目前所用的电脑氏32位的,所以只需要32版本的。
请楼主和楼上编译成功的坛友指导。
7楼#
发布于:2017-03-13 00:18
在ubuntuMate1604下试着编译。根据提示,要装上nodejs-legacy才可以运行node.js脚本。
编译时提示出错,估计依赖包没有。不过那些依赖包的确切包名该氏啥呢?
经尝试,有三个包可以装上,不过要增加个加号,devel用dev代替就能装上。
sudo apt install libxkbcommon-dev
sudo apt install gtk+2-dev
sudo apt install gtk+3-dev
但氏ibus的开发包装不上,不知确切包名氏啥。。。yong输入法怎么还会依赖ibus呢?
mate1604@wdnb00:~$ sudo apt install ibus-dev
正在读取软件包列表... 完成
正在分析软件包的依赖关系树      
正在读取状态信息... 完成      
E: 无法定位软件包 ibus-dev
8楼#
发布于:2016-08-30 12:09
fireflyoo:怎么编译成win32版的?
i686-w64-mingw32-gcc -I/run/media/fireflyoo/DD2801CE9FEF970F/msys32/home/Feng/arch-yong/src/yong/llib -I/...
回到原帖
部分代码还没有开源
9楼#
发布于:2016-08-30 10:55
怎么编译成win32版的?
i686-w64-mingw32-gcc -I/run/media/fireflyoo/DD2801CE9FEF970F/msys32/home/Feng/arch-yong/src/yong/llib -I/run/media/fireflyoo/DD2801CE9FEF970F/msys32/home/Feng/arch-yong/src/yong/im -I/run/media/fireflyoo/DD2801CE9FEF970F/msys32/home/Feng/arch-yong/src/yong/im/IMdkit -DCFG_XIM_IBUS `pkg-config --cflags ibus-1.0` -DCFG_XIM_FBTERM -I/run/media/fireflyoo/DD2801CE9FEF970F/msys32/home/Feng/arch-yong/src/yong/im/fbterm -DL_CALL_GLIB_SERVER -D_UNICODE -DUNICODE -march=i686 -Wall -g -O2 -fms-extensions -fno-strict-aliasing -pipe -I/run/media/fireflyoo/DD2801CE9FEF970F/msys32/home/Feng/arch-yong/src/yong/include -I/run/media/fireflyoo/DD2801CE9FEF970F/msys32/home/Feng/arch-yong/src/yong/common `pkg-config --cflags gtk+-3.0` -c /run/media/fireflyoo/DD2801CE9FEF970F/msys32/home/Feng/arch-yong/src/yong/im/ui.c -o ui.o
In file included from /usr/include/glib-2.0/gio/gio.h:46:0,
                 from /usr/include/gtk-3.0/gdk/gdkapplaunchcontext.h:28,
                 from /usr/include/gtk-3.0/gdk/gdk.h:32,
                 from /usr/include/gtk-3.0/gtk/gtk.h:30,
                 from /run/media/fireflyoo/DD2801CE9FEF970F/msys32/home/Feng/arch-yong/src/yong/im/ui.c:1:
/usr/include/glib-2.0/gio/gcredentials.h:75:1: 错误:未知的类型名‘uid_t’
 uid_t            g_credentials_get_unix_user      (GCredentials    *credentials,
 ^~~~~
/usr/include/glib-2.0/gio/gcredentials.h:79:52: 错误:未知的类型名‘uid_t’
                                                    uid_t           uid,
                                                    ^~~~~
In file included from /run/media/fireflyoo/DD2801CE9FEF970F/msys32/home/Feng/arch-yong/src/yong/im/ui.c:2:0:
/usr/include/gtk-3.0/gdk/gdkx.h:30:22: 致命错误:X11/Xlib.h:没有那个文件或目录
 #include <X11/Xlib.h>
                      ^
编译中断。
我编译失败。。卡在im/ui.c这文件上。。
上一页
游客

返回顶部