
OpenToonz macOS 构建指南从零搭建开发环境并完成命令行与 Xcode 双路编译【免费下载链接】opentoonzOpenToonz - An open-source full-featured 2D animation creation software项目地址: https://gitcode.com/GitHub_Trending/op/opentoonz本篇指南完整梳理 OpenToonz 在 macOS 上的开发环境搭建流程覆盖前置软件安装、Homebrew 依赖部署、第三方库准备、命令行与 Xcode 两种编译方式、stuff 资源目录部署以及构建产物运行并对照仓库中的 CMake 构建脚本 与第三方库查找模块解释每一步背后的编译原理与常见坑点。读完本文你将能够在一台干净的 macOS 机器上独立完成 OpenToonz 的源码编译、打包与调试。一、构建前置要求软件与版本清单在开始之前请确认机器上具备以下软件。它们的角色与最低版本要求如下表所示软件最低版本用途git任意可用版本获取源码brewHomebrew任意可用版本macOS 包管理器安装大部分依赖Xcode与当前 macOS 版本匹配提供 Clang 工具链与 macOS SDKcmake3.10 或更高跨平台构建系统Qt5.x5.15 或更高GUI 框架OpenToonz 的全部界面与交互依赖它boost1.55.0 或更高通用 C 库这些版本要求与仓库源码相互印证顶层构建脚本 toonz/sources/CMakeLists.txt 声明了cmake_minimum_required(VERSION 3.10)并将全局 C 标准设为 C17对 Qt 则在 CMakeLists.txt 第 306-311 行 处校验Qt5Core_VERSION不得低于 5.5.0文档进一步建议使用 5.15 以上以兼容 macOS 新版本Boost 通过find_package(Boost 1.55 REQUIRED)强制要求 1.55 以上见 CMakeLists.txt 第 606 行。二、第一步安装 XcodeXcode 是 macOS 上的编译器套件与 SDK 来源OpenToonz 的 Clang 工具链、链接器以及系统框架都依赖它。下载 Xcode 时务必选择与你当前 macOS 版本匹配的版本可参考苹果官方 Xcode 版本对照表确认具体版本号。Apple Store 通常只提供最新 macOS 对应的 Xcode较老的操作系统需要前往 Apple Developer 网站下载对应历史版本。安装完应用后必须至少启动一次 Xcode让其完成命令行工具与许可协议的初始化否则后续编译阶段可能找不到 SDK 或报许可错误。三、第二步安装 Homebrew打开「终端」执行 Homebrew 官方安装脚本即可。建议以 brew.sh 官网当前的安装说明为准命令主体通常如下/bin/bash -c $(curl -fsSL Homebrew 官方安装脚本地址)安装完成后可以通过brew --version验证是否成功。Homebrew 的安装位置决定了后续所有依赖库的查找路径这一点在 FindSuperLU.cmake 中有明确体现Apple SiliconM1/M2机器使用/opt/homebrew前缀Intel 机器使用/usr/local前缀构建脚本会自动探测并据此定位头文件与库文件。四、第三步使用 brew 安装全部依赖在终端中依次执行以下两条命令brew install glew lz4 libjpeg libpng lzo pkg-config libusb cmake git-lfs libmypaint qt5 boost jpeg-turbo opencv git lfs install各依赖包的用途如下包用途glewOpenGL 扩展加载库渲染与特效模块依赖lz4高速压缩库用于文件缓存与中间数据压缩libjpeg / jpeg-turboJPEG 图像编解码libpngPNG 图像编解码lzo无损压缩库构建时会从仓库thirdparty中引入pkg-config供 CMake 的pkg_check_modules定位库libusbUSB 设备访问数位板等输入设备cmake构建系统本体git-lfsGit 大文件支持克隆素材库必需libmypaintMyPaint 笔刷引擎qt5Qt 5 GUI 框架boost通用 C 库jpeg-turbo独立安装的 turbojpeg 库64 位构建需要opencv计算机视觉库用于图像处理特效注意事项brew install qt5安装的是 Qt 5.x 最新版可能与较老的 macOS 版本不兼容。若无法使用最新版可改用 Qt 官方在线安装器下载合适的 macOS 版本最低 5.15务必同时勾选Qt Script (Deprecated)模块——OpenToonz 的表达式与脚本功能依赖该模块。这一点与源码吻合构建脚本通过find_package(Qt5 REQUIRED Core Gui Network OpenGL Svg Xml Script Widgets PrintSupport LinguistTools Multimedia MultimediaWidgets SerialPort UiTools)一次性要求 14 个 Qt 模块见 CMakeLists.txt 第 284-299 行其中就包括Script与SerialPort。git lfs install必须在克隆仓库后拉取素材前完成否则大文件笔刷、贴图等资源会以指针文件形式存在而无法正常使用。五、清理 glew 符号链接兼容性修复Homebrew 安装的 glew 可能会在/usr/local/lib/cmake/glew留下一个符号链接目录导致 CMake 找到错误版本的 glew 配置。按文档要求检查并移除它ls -l /usr/local/lib/cmake/glew rm /usr/local/lib/cmake/glewApple Silicon 机器上该路径对应为/opt/homebrew/lib/cmake/glew同样需要检查。之所以要清理是因为构建脚本先通过find_package(GLEW)查找失败后回退到pkg_check_modules(GLEW REQUIRED glew)见 CMakeLists.txt 第 416-434 行残留的错误符号链接会干扰这两个查找流程的判定。六、获取仓库与准备第三方库以下步骤将 OpenToonz 仓库克隆到~/Documents目录下cd ~/Documents # 或你希望存放仓库的任意目录 git clone https://gitcode.com/GitHub_Trending/op/opentoonz cd opentoonz git lfs pull cd thirdparty/lzo cp -r 2.03/include/lzo driver cd ../tiff-4.0.3 ./configure --disable-lzma make这一步有三个关键动作分别对应仓库中的三处实现细节git lfs pull拉取由 Git LFS 托管的大文件资源。仓库根目录下的 stuff 中存放着笔刷、贴图、着色器、布局等大量二进制素材若跳过此步运行时会缺少资源。cp -r 2.03/include/lzo driver把 thirdparty/lzo/2.03/include/lzo 下的 LZO 头文件复制为driver目录供构建脚本作为源码子目录引入。顶层 CMakeLists.txt 第 747 行 的add_subdirectory(${SDKROOT}/lzo/driver lzodriver)正是编译这一部分而 FindLZO.cmake 则在WITH_SYSTEM_LZO关闭时优先从thirdparty的lzo/2.03/include/lzo与lzo/2.03/lib查找。./configure --disable-lzma make在thirdparty/tiff-4.0.3中本地编译 libtiff并显式禁用 lzma 支持。原因可见 CMakeLists.txt 第 499-502 行 的注释如果系统 libtiff 链接了 lzma 而 OpenToonz 的libimage模块不知情会导致链接期符号缺失。手动安装 boost 的替代方案如果你没有通过 brew 安装 boost而是从 boost 官网下载了源码包可以把它放到thirdparty/boost下并解压cd thirdparty/boost mv ~/Downloads/boost_1_72_0.tar.bz2 . # 文件名以实际下载为准 tar xvjf boost_1_72_0.tar.bz2构建脚本对 Boost 的查找做了充分的兼容处理先搜索THIRDPARTY_LIBS_HINTS包含 Homebrew Cellar 路径与thirdparty根目录再依次尝试boost/boost_1_89_0/到boost/boost_1_72_0/等子目录后缀见 CMakeLists.txt 第 582-606 行。七、配置构建环境并执行编译创建构建目录cd ~/Documents/opentoonz/toonz mkdir build cd build将 libjpeg-turbo 的 pkgconfig 路径加入PKG_CONFIG_PATHIntel 机器将/opt/homebrew替换为/usr/localexport PKG_CONFIG_PATH/opt/homebrew/opt/jpeg-turbo/lib/pkgconfig:$PKG_CONFIG_PATH该环境变量供pkg_check_modules(TURBOJPEG REQUIRED libturbojpeg)使用见 CMakeLists.txt 第 462 行缺少它会导致 64 位构建找不到 turbojpeg。方式一命令行构建cmake ../sources -DQT_PATH/opt/homebrew/opt/qt5/lib # 替换为你实际安装的 Qt 路径 make若使用 Qt 官方安装器并安装到了~/Qt则 Qt 的 lib 路径形如~/Qt/5.12.2/clang_64/lib或~/Qt/5.12.2/clang_32/lib请按实际目录替换。从源码看QT_PATH其实可以省略当未显式传入时构建脚本会自动执行brew --prefix qt5探测 Homebrew 中的 Qt 路径见 CMakeLists.txt 第 186-206 行并把CMAKE_PREFIX_PATH指向其lib/cmake/Qt5随后输出Auto-detected Qt path:日志。显式指定适用于非 Homebrew 安装的场景。方式二使用 Xcode 构建sudo xcode-select -s /Applications/Xcode.app/Contents/Developer cmake -G Xcode ../sources -B. -DQT_PATH/opt/homebrew/opt/qt5/lib -DWITH_TRANSLATIONOFF # 替换为你实际安装的 Qt 路径-DWITH_TRANSLATIONOFF是 Xcode 12 环境下的必选项Xcode 12 及以上不允许把同一源码同时加入多个 target而翻译项目.ts编译为.qm会触发该限制。该选项的默认值是 ON其作用可在 CMakeLists.txt 第 109 行 及第 657-730 行的翻译编译逻辑中确认。随后打开 Xcode加载工程文件~/Documents/opentoonz/toonz/build/OpenToonz.xcodeproj。在 Scheme 中把构建目标从ALL_BUILD改为OpenToonz。通过Product - Build启动构建。关于 Xcode 重复构建的已知现象首次构建应无报错之后的构建虽显示成功但会伴随以下 3 条可安全忽略的错误输出/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/install_name_tool: for: .../OpenToonz.app/Contents/MacOS/OpenToonz (for architecture x86_64) option -add_rpath executable_path/. would duplicate path, file already has LC_RPATH for: executable_path/. /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/install_name_tool: for: .../OpenToonz.app/Contents/MacOS/OpenToonz (for architecture x86_64) option -add_rpath /usr/local/Cellar/qt/5.12.2/lib/ would duplicate path, file already has LC_RPATH for: /usr/local/Cellar/qt/5.12.2/lib/ Command /bin/sh emitted errors but did not return a nonzero exit code to indicate failure这些错误源于重复写入 RPATH动态库搜索路径并不影响产物可用性。顺便说明macOS 产物的动态库路径修复逻辑保存在仓库的 toonz/install/installName.sh 与 toonz/install/finalizeProgram.sh 中前者通过install_name_tool将各libtnz*.dylib的引用重定位到executable_path/../Frameworks后者串联了插件复制与动态库重定位流程。侧记若希望同时保留命令行与 Xcode 两种构建方式请为它们各自创建独立的 build 目录避免 CMake 缓存互相干扰。可选的构建开关在 CMakeLists.txt 第 106-110 行 中可以看到更多可配置项供进阶使用选项默认值说明WITH_SYSTEM_LZOmacOS 下 OFF使用系统 LZO 而非thirdparty内的源码WITH_SYSTEM_SUPERLUmacOS 下 OFF使用系统 SuperLU 而非thirdpartyWITH_CANONOFF启用 Canon 单反相机支持需要额外下载 Canon SDKWITH_TRANSLATIONON生成多语言翻译工程Xcode 12 需置 OFFWITH_WINTABOFF仅 Windows 相关的数位板支持选项八、部署 stuff 资源目录如果你已经在当前机器上安装过 OpenToonz可以跳过本步骤否则需要把仓库中的 stuff 目录部署为系统级资源目录cd ~/Documents/opentoonz sudo mkdir /Applications/OpenToonz sudo cp -r stuff /Applications/OpenToonz/OpenToonz_stuff sudo chmod -R 777 /Applications/OpenToonzstuff 目录是 OpenToonz 的运行时资源中枢包含 config布局、qss 主题、FDG 模板、图标等、library相机标定、粒子、笔刷、贴图、着色器等、profiles布局预设等子目录。chmod -R 777是为了让应用在首次运行时能够写入配置与临时文件。九、运行构建产物命令行构建的产物open ~/Documents/opentoonz/build/toonz/OpenToonz.appXcode 构建的产物打开 Scheme 编辑器Product - Scheme - Edit Scheme取消勾选Run - Options - Document Versions避免版本冲突弹窗干扰调试以 Debug 模式运行Product - Run若需从命令行或 Finder 直接打开产物位于~/Documents/opentoonz/toonz/build/Debug/OpenToonz.app。十、源码视角依赖查找路径全解析理解 CMake 如何找到依赖能帮助你在遇到Not found类错误时快速定位问题。核心逻辑集中在 toonz/sources/CMakeLists.txt第三方库根目录SDKROOT被解析为仓库thirdparty的绝对路径并加入THIRDPARTY_LIBS_HINTS搜索提示在 macOS 上该列表还包含/usr/local/Cellar/与/opt/include。平台判定BUILD_ENV_APPLE分支会追加-DMACOSX -Di386 -D__MACOS__宏定义64 位构建附带-m64 -stdliblibc -fno-implicit-templates编译选项见 CMakeLists.txt 第 213-227 行。SuperLU由 FindSuperLU.cmake 负责显式探测 Apple Silicon 的/opt/homebrew与 Intel 的/usr/local并以slu_Cnames.h作为头文件存在的标志。LZO由 FindLZO.cmake 负责优先查找动态库liblzo2.so其次静态库最后才用thirdparty内的lzo2_64.lib因为静态 LZO 在某些系统上存在已知问题。OpenCVmacOS 64 位构建使用find_package(OpenCV 4.1 REQUIRED)见 CMakeLists.txt 第 327-332 行。子模块编译顺序tnzcore → tnzbase → tnzext → toonzlib → toonzqt → toonz等按依赖层级依次add_subdirectory见 CMakeLists.txt 第 735-753 行最终生成 OpenToonz 主程序。十一、常见问题与排查建议Xcode 12 构建失败报错多与翻译工程重复添加源码有关请确认已加-DWITH_TRANSLATIONOFF。brew --prefix qt5失败说明未安装 qt5 或 Homebrew 路径异常错误信息会明确提示Install with brew install qt5 or set QT_PATH manually此时显式传入-DQT_PATH即可。找不到 turbojpeg / OpenCV检查PKG_CONFIG_PATH是否已包含 jpeg-turbo 的 pkgconfig 目录并确认 brew 安装的 opencv 版本满足 4.1 以上。启动即崩溃或缺少资源多半是 stuff 目录未部署或git lfs pull未执行请回到第八节与第六节核对。Intel 与 Apple Silicon 路径混淆所有/opt/homebrew前缀在 Intel 机器上应替换为/usr/localCMake 在 FindSuperLU.cmake 中已做自动兼容但手动传给QT_PATH与PKG_CONFIG_PATH的路径仍需自行核对。重复 RPATH 警告即第七节列出的 3 条install_name_tool输出可安全忽略不影响运行。十二、延伸阅读源码入口与完整构建逻辑toonz/sources/CMakeLists.txt依赖查找模块FindLZO.cmake、FindSuperLU.cmake、FindTIFF.cmakemacOS 打包辅助脚本toonz/install/installName.sh、toonz/install/finalizeProgram.sh、toonz/install/copy_plugin.sh运行时资源目录stuff、stuff/config同仓库其他平台构建文档Linux 构建指南、Windows 构建指南【免费下载链接】opentoonzOpenToonz - An open-source full-featured 2D animation creation software项目地址: https://gitcode.com/GitHub_Trending/op/opentoonz创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考