分享 Mac OS 源码编译 Emacs git 的方法

1. 安装编译依赖

  $ brew install autoconf automake texinfo gnutls pkg-config --debug --verbose

注意,必须安装 pkg-config, 要不是 emacs ./configure 的时候一直说 gnutls 这个包找不到,即使你已经安装了 gnutls

2. 下载 git 源码

  $ git clone --depth 1 git://git.savannah.gnu.org/emacs.git

3. 编译 emacs

  $ cd ./emacs && ./autogen.sh
  $ ./configure && make && make install

4. 安装

  $ open -R nextstep/Emacs.app

在文件管理器中拖拽 Emacs.app 到应用程序目录

5. 添加自己的配置文件到 ~/.emacs

编译还是比较顺利的,只是中间 proxychians4 代理的时候没有加 --debug --verbose, 导致我无数次认为 brew 卡死了。

移植 lazycat-emacs 到Mac OS平台比我想象的顺利,只有几个小问题:

  1. x-send-* 函数在Mac OS上没有, 用 set-frame-paramter 跨平台函数替换
  2. 不同平台的字体不一样,用system-type判断了操作系统平台搞定
  3. MacOS 平台Emacs对没有 unset 的 prefix key 检查的更严格
  4. 键盘映射不一样,用 Karabiner-Elements 搞定

最后发现因为 MacOS 平台运行 dbus.el 相关代码会报错,把我的 minibuffer-tray 和 eaf 都搞挂了,哈哈哈

1 个赞

弱弱的问一句,大家编译源码的时候会选特定分支吗?比如latest release 分支emacs-26,还是直接编译master的代码。

切啥分支啊,直接最新git版,最新版最爽

考虑用emacs-mac-port么?

哈哈,我是这样解决依赖的,先brew install emacs,安装所需要的依赖,

然后再从git源码编译,就是git源码编译需要运行autogen,后运行configure, 另外需要textinfo编译info

如果是直接下的发布的emacs源码包,就不用texinfo了,另外不用运行autogen直接./configure

另外我编译的时候提示makeinfo的版本太低,估计因为mac自带了,所以还需要 export PATH="/usr/local/opt/texinfo/bin:$PATH"引用新安装的

我是checkout到emacs26的tag版本的,新手怕坑

brew直接编译安装不是一样的效果吗?