🍎M1 mac环境编译TeXStudio

💵该换M2 Pro了

Posted by Shicong Liu on May 31, 2023

5 Apr. 2024

目前brew已经实现了完整的pipeline,用户直接通过brew安装的texstudio就是Apple Silicon的版本,手动编译已经没有了必要性。本文留档但不推荐尝试。


已经有两个月没有发布任何信息了。这段时间里发生了很多事情,许多计划在纠结中一地鸡毛,直到今天许多事情都没能真正尘埃落定。距离正式毕业还有三四天的时间,就趁现在写几篇轻松些的内容好了。

在苹果发布M1系列芯片后,许多软件需要针对Apple Silicon的arm64架构重新编译。经过几年的迭代,大部分仍在维护的软件都实现了原生支持arm64架构,不需要进行Rosetta 2转译,从而一定程度上避免了性能损失。事到如今我的常用软件里只有TexStudio和MATLAB仍然是x86_64平台编译的,通过转译实现跨平台支持。MATLAB早些时候提到原生支持Apple Silicon的版本正在开发,然而除了一年前开放测试的阉割版2022b1以外,完整版的支持始终杳无音信。

相比闭源商业软件MATLAB,TeXStudio是开源软件2,允许我们在本地从源码构建。为了治愈强迫症,我花了一下午的时间实现了踩雷本地编译。

准备工作,配置依赖

1
2
3
4
5
brew reinstall $(brew deps poppler)
brew install vips
brew install freetype
brew install clang-format
brew install qt

实际上$(brew deps poppler)就包含了freetype,但由于编译器寻包策略,我本地机器上的MATLAB Runtime顶替了原本macOS的arm64版依赖,导致了后续许多错误。此外此处的qt默认是Qt@6,在macOS上brew安装的Qt@5本身不主动承担作为依赖项的职能,texstudio本身也可以从qt6构建。

但是我们并不能从brew上直接安装合适的poppler。基于qt6构建的poppler在brew上构建失败了,brew也并没有计划设置合适的formula支持,因此需要从官方源构建poppler。为节约时间,从官方页面3下载最新版本(此处使用的是五月初发布的poppler-23.05.0.tar.xz)。

解压后进入根目录,修改CMakeLists.txt第74行

1
option(ENABLE_QT5 "Compile poppler qt5 wrapper." ON)

1
option(ENABLE_QT5 "Compile poppler qt5 wrapper." OFF)

取消对Qt5的编译过程。

此后按顺序执行

1
2
3
4
cd build
cmake ..
cmake --build . --parallel
sudo cmake --build . -t install

也可以直接参考根目录下的INSTALL文件操作,此处不再赘述。

构建并安装了poppler-qt6之后,下载texstudio的最新源码

解压后仍然修改CMakeLists.txt第47行

1
find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets LinguistTools REQUIRED)

1
find_package(QT NAMES Qt6 COMPONENTS Widgets LinguistTools REQUIRED)

直接取消对qt5的搜索。

不同版本的CMakeLists可能会有不同,请根据实际情况调整

完成后执行

1
2
3
cd build
cmake ..
cmake --build . --parallel

编译结束后会在build下生成texstudio.app,将其复制到Application中即可。


本地构建过程中遇到了许多问题,包括在寻包过程中意外使用x86_64的MATLAB Runtime,Qt5的不佳支持无法有效搜索到PDF渲染器poppler等。至此除了商业软件MATLAB以外,所有常用软件已经全部迁移到arm64平台。