MacOS编译Synergy [Compile Synergy on MacOS]

为什么需要Synergy?

Synergy是一个跨平台的鼠标、键盘、剪切板共享软件,支持Windows,MacOS,Linux主流桌面平台。你可以用Macbook的触控板和键盘操作旁边的Windows电脑。

官网:https://symless.com/synergy
开源地址:https://github.com/symless/synergy-core

为什么要自己编译?

  1. 官网下载要钱
  2. 用别人编译好的怕有后门

Reference

官方wiki:https://github.com/symless/synergy-core/wiki/Compiling
民间教程:https://segmentfault.com/a/1190000023512582

我主要用的是民间教程,并参考着官方的wiki整的。官方wiki需要你去下载一个qt5的安装程序去安装,那个安装程序要填什么账号什么的,非常让人无语。于是我更喜欢民间教程。

步骤

1. clone synergy-core

clone一下synergy的开源仓库。

2. 安装Homebrew

Homebrew的官网。复制一下官网的安装命令即可。

3. 安装相关编译软件

民间教程就是只装这俩就行。

但是官方wiki还提到了另外两个。

以防万一可以都装上。

4. 安装qt5

现在最新版是qt6了,但是实测用qt6是编译不了的。所以要制定qt的版本安装。

搜索qt的相关包

Formulae里面可以找到qt@5,装它

找到qt@5的安装位置,非常重要!

我的装在这里/opt/homebrew/Cellar/qt@5/5.15.6

5. 编译

5.1 新建环境变量

注意一下这一步跟其他教程可能会有不一样的地方,也是我踩过的坑。民间教程路径是到Frameworks文件夹结尾的,实测不行。官方wiki更是无法参考。

5.2 安装Xcode

App store安装即可,可能需要更新系统。

5.3 查询一些东西

  1. Xcode SDK
    大致是在这里:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk
    不过不同系统最后的系统版本号可能不是12.3,去对应的文件夹下找一下即可。

  2. 系统版本和架构
    左上角的苹果标志–>About This Mac 里面Version xx.x就是系统版本。如果是Intel的cpu那架构就是x64,如果是Apple M1/M2 那就是arm64。

  3. openssl
    大致是在这里:
    /opt/homebrew/opt/openssl@1.1/
    同样不同系统可能不同,去对应的文件夹下找一下。

5.4 cmake&make

进入synergy-core文件夹,

上面cmake用到的东西你应该都在上面查到了,替换即可。

6. APP

编译完成之后synergy-core/build/bin/里面会有很多可执行文件。
官方wiki的原话是这样的:

Go to build folder > bin copy all execs and place in bundler > Synergy.app (click left and Show package contents) > Contents and make a folder called MacOS and paste the execs there

意思就是把synergy-core/build/bin/里面的可执行文件复制到synergy-core/build/bundler/Synergy.app/Contents/MacOS文件夹里面。其中进入Synergy.app需要右键+Show package contents,MacOS文件夹需要自己创建。

这样APP就打包好啦!可以把打包好的APP复制到Applications里面。

7. 权限

不设置权限的话,主要问题是打开软件发现它INFO里main会出ERROR,瞄了一眼大概是什么网络什么的问题。

主要需要设置的权限是
System Preferences… -> Security & Privacy -> Privacy -> Accessibility
把Synergy添加进去,并Allow the apps below to control your computer底下给Synergy打勾。

如果不行,尝试重启。
再不行,在上面的权限里面把Terminal或者你的iTerm加进去,然后在命令行中

即可。

记录一下,怕忘了。

1 Comments

Leave a Comment