macOS 部署 notepad--:十分钟编译跑通
【免费下载链接】notepad--一个支持windows/linux/mac的文本编辑器,目标是做中国人自己的编辑器,来自中国。项目地址: https://gitcode.com/GitHub_Trending/no/notepad--
终端里贴了第三段Could NOT find Qt5的报错,你开始怀疑是不是 Qt 版本又抽风了。其实 notepad-- 在 macOS 上的安装没这么玄学——这个支持多标签编辑、语法高亮和文件对比的文本编辑器,M 芯片和 Intel 走的是同一条 CMake 路径,配置对了十分钟就能出窗口。下面是最短走通路径,全程约 10 分钟。
环境体检
先确认你的机器落在支持范围内,缺什么补什么,避免编译到一半才回头装依赖。
| 检查项 | 最低要求 | 推荐值 | 不满足时的替代做法 |
|---|---|---|---|
| macOS 版本 | 10.14+ | 12 及以上 | 老系统直接用预编译发布版,别硬编译 |
| CPU 架构 | Intel 或 ARM(M 系列) | M 系列原生编译 | M 芯片上若 Homebrew 是 Intel 版会编出 x86_64 产物,见排障表 |
| 内存 | 4 GB | 8 GB | 编译时把并发降为-j1 |
| 磁盘可用 | 5 GB(Qt5 + 源码 + 构建产物) | 10 GB | 删旧 build 目录释放 |
| Qt 版本 | 5.15,必须是 Qt5 | Homebrewqt@5 | Qt 6 不可用,CMakeLists.txt 里写死了find_package(Qt5 ...) |
| CMake | 3.16+ | 最新 3.x | cmake_minimum_required(VERSION 3.16)低于此直接报错 |
⚠️ 锁定 Qt 5.15 的原因:工程只依赖 Qt5 的 Widgets/PrintSupport/XmlPatterns 组件,Qt 6 的模块拆分会让上面这行find_package直接失败,而不是报个模糊的链接错误。
一键检测当前环境,五秒出结果:
sw_vers && uname -m cmake --version ls "$(brew --prefix qt@5)/lib/cmake/Qt5/Qt5Config.cmake" 2>/dev/null && echo "Qt5 OK" || echo "Qt5 缺失" sysctl -n hw.memsize hw.ncpu df -h . | tail -1编译安装 notepad-- 最短路径
这条主线只走一遍,五个步骤,每步都有验证点。
两个要点:QScintilla 语法高亮库和 helloworld 插件都被根 CMakeLists 用add_subdirectory拉进来一起编,所以不需要单独进入src/qscint/跑 qmake;macOS 产物是裸二进制而不是 .app 包,直接在终端运行即可。
步骤 1:装 Qt5 和构建工具——这一步补齐 CMake 配置时会被find_package引用的全部依赖。
brew install qt@5 cmake ninja验证点:运行ls "$(brew --prefix qt@5)/lib/cmake/Qt5/Qt5Config.cmake",看到该文件存在即通过。
步骤 2:拿到源码——克隆仓库并进入根目录。
git clone https://gitcode.com/GitHub_Trending/no/notepad-- cd notepad--验证点:运行ls CMakeLists.txt src/qscint/CMakeLists.txt,两个文件都列出即通过。
步骤 3:CMake 配置——这一步把 Qt5 路径和构建类型写进 CMakeCache,Release 类型决定静态库最终命名,后面别改。
cmake -B build \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_PREFIX_PATH="$(brew --prefix qt@5)"验证点:运行grep CMAKE_BUILD_TYPE build/CMakeCache.txt,看到Release且结尾没有Qt5 NOT FOUND即通过。
如果你在 M 芯片机器上编完发现产物是 x86_64 → 说明 Homebrew 是 Intel 版,跳去排障表「产物显示 x86_64」那一行。
步骤 4:并行编译——这一步耗时最长,M 芯片上 QScintilla 的 lexers 目录是主要开销。
cmake --build build -j$(sysctl -n hw.ncpu)验证点:运行ls -lh build/NotePad--,看到可执行文件、且编译结尾是Linking CXX executable NotePad--即通过。
步骤 5:跑起来——第一次直接终端启动,有报错也能当场看到。
./build/NotePad--验证点:运行./build/NotePad--,看到窗口标题 Notepad-- 以及 文件/编辑/查找/视图 菜单栏即通过。

配置与调优
锁定 Release:qscint 库名会随构建类型变化
解决「先编过 Debug 再切 Release,链接报找不到 qscint」的问题。QScintilla 静态库在 Release 下叫qmyedit_qt5,Debug 下叫qmyedit_qt5d(见 src/qscint/CMakeLists.txt),两者不可混用,切换构建类型务必先删 build 目录。
| 字段 | 默认值 | 建议值 | 作用 |
|---|---|---|---|
CMAKE_BUILD_TYPE | 空(按 Debug 处理) | Release | 决定 qscint 静态库命名与优化级别 |
CMAKE_PREFIX_PATH | 未设置 | $(brew --prefix qt@5) | 告诉 CMake 去哪找 Qt5Config.cmake |
插件开关 PLUGIN_EN
解决「不想让主程序加载插件库」的问题。默认不传该变量时插件加载路径开启;传on会定义NO_PLUGIN=1关掉它(注意逻辑是反直觉的,见根 CMakeLists.txt 第 23-27 行)。
| 字段 | 默认值 | 建议值 | 作用 |
|---|---|---|---|
PLUGIN_EN | 未定义(插件启用) | 保持不传 | 传on则添加-DNO_PLUGIN=1,禁用插件加载 |
中文编码配置
解决「打开 GBK 老文件显示乱码」的问题。编码在状态栏右侧下拉框手动切换即可(支持 UTF-8、GB18030 等),选错编码不会崩溃,只是显示乱码;选对后重新保存就修好了。编码判断与转换逻辑在 src/Encode.cpp,窗口布局、查找历史等设置由 QSettings 以 INI 格式按用户作用域落盘(src/cceditor/ccnotepad.cpp),不用手动维护配置文件路径。
配色主题在 src/themes/ 下有 16 套现成目录(Monokai、Bespin、Deep Black 等),每套按语言提供 .ini,在「设置」里切换,改配色不用动代码。

排障速查
只收高频问题,一行一个修法。
| 你看到的现象 | 最可能的原因 | 一条修复命令或配置 |
|---|---|---|
配置时报Qt5 NOT FOUND | 没传 Qt5 路径,CMake 找不到 Qt5Config.cmake | 配置命令加-DCMAKE_PREFIX_PATH="$(brew --prefix qt@5)" |
链接阶段报找不到qmyedit_qt5d或 qscint 符号 | Debug 与 Release 构建类型混用 | rm -rf build后按步骤 3 重新以Release配置 |
M 芯片上file build/NotePad--显示 x86_64 | Homebrew 是 Intel 版,qt@5 也是 x86 二进制 | 换 arm64 版 brew 重装qt@5,删 build 重编 |
| GBK 文件中文乱码 | 编码按 UTF-8 打开了 | 状态栏下拉框手动选 GBK/GB18030 再保存 |
| 编好但启动报 dylib 加载失败 | qt@5 依赖库缺失或路径断裂 | brew reinstall qt@5后重跑./build/NotePad-- |
以上都没解决 → 先在仓库 Issues 搜索相同现象,再提交新 issue 并附完整终端输出。
适用边界
这条路径产出的是 macOS 本地裸二进制,不是 .app 安装包:仓库里的 NSIS 安装器配置 cmake/nsis_package_config.cmake 只服务于 Windows,deb 打包 cmake/deb_package_config.cmake 只服务于 Linux。不想编译就直接取项目的预编译发布版;要无图形界面的服务器场景,这个 GUI 编辑器不适用。
git pull && cmake --build build -j$(sysctl -n hw.ncpu)遇到问题先在仓库 Issues 搜索相同现象,没有再提交,附sw_vers、uname -m和完整报错。
【免费下载链接】notepad--一个支持windows/linux/mac的文本编辑器,目标是做中国人自己的编辑器,来自中国。项目地址: https://gitcode.com/GitHub_Trending/no/notepad--
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考