☰
Natron 在 GNU/Linux 上从源码编译安装完整指南:qmake 与 CMake 双构建路径详解
2026/10/15 6:16:42 网站建设 项目流程
  • 音视频
  • 视频处理
  • 图形学
  • 桌面应用

【免费下载链接】Natron

Open-source video compositing software. Node-graph based. Similar in functionalities to Adobe After Effects and Nuke by The Foundry.

项目地址:https://gitcode.com/gh_mirrors/na/Natron
点击查看免费下载

本篇技术指南面向需要在 GNU/Linux(Arch、Debian/Ubuntu、Fedora/RHEL 等)上从源码构建 Natron 的开发者与打包者,完整覆盖 Docker 一键构建、Natron SDK 依赖构建、手动依赖安装、config.pri配置、qmake/CMake 两种构建流程以及 Python 绑定的生成方法。读完本文,你将掌握从克隆仓库到产出可运行二进制、再到运行单元测试的全链路实操方案,并能依据仓库内脚本与配置理解每一步的底层原理。

构建方式总览

Natron 是一个基于节点图的开源视频合成软件,其 Linux 版源码编译有三种主流路径,官方文档(INSTALL_LINUX.md)给出的取舍建议如下:

  1. Docker 一键构建:最省事、最"hands-off"的方式,适合只想快速拿到可运行二进制、不想折腾依赖的用户;
  2. 完整 Natron SDK:官方二进制所用的构建环境,脚本会从零编译全部第三方依赖并安装到/opt/Natron-sdk,适合打包维护者;
  3. 发行版包管理器 + 手动构建:利用 Arch / Debian / Fedora 等发行版提供的 Qt、Boost、Expat、Cairo、PySide2 等软件包,配合config.pri指向这些库,适合大多数开发者日常编译调试。

无论走哪条路,仓库本身都提供了大量现成脚本作为支撑,下文将逐一给出对应文件路径,便于你对照源码理解每一步的实际行为。

Docker 一键构建

如果你已经安装了 Docker,Natron 的官方 SDK 镜像natrongithub/natron-sdk可以直接用于构建完整的 Natron 二进制包。步骤非常简单:先创建一个用于承载构建产物的目录(例如builds),然后执行:

docker run -it --rm --mount src="$(pwd)/builds",target=/home/builds_archive,type=bind natrongithub/natron-sdk:latest

Docker 会自动完成其余所有工作,构建结束后你会在./builds目录下得到一个完整的 Natron 二进制归档(tgz 格式)。--rm表示容器退出后自动清理,--mount src=...,target=/home/builds_archive,type=bind把宿主机的builds目录绑定挂载到容器内的/home/builds_archive,从而把产物"带"出容器。

镜像的构建与运行细节记录在 tools/docker/README.md 中,你可以据此做更精细的控制:

  • 限制并行编译任务数,例如--env MKJOBS=2;
  • 指定源码分支或提交,例如--env GIT_BRANCH=RB-2.4、--env GIT_URL=...、--env GIT_COMMIT=...;
  • 发布构建需在 Natron 与各插件仓库打上对应 tag,并设置RELEASE_TAG(如2.4.4)与NATRON_BUILD_NUMBER=1等环境变量;
  • 如果构建中途失败,可以改用docker run -it --rm ... natrongithub/natron-sdk:latest bash进入交互式 shell,手动执行launchBuildMain.sh排查问题。

SDK 镜像本身正是由 tools/jenkins/include/scripts/build-Linux-sdk.sh 生成的:该脚本支持GEN_DOCKERFILE=1直接输出 Dockerfile(而不是真去编译),并基于 CentOS / Rocky Linux / Ubuntu 生成对应的中间构建镜像,这正是官方二进制能在较老发行版上兼容运行的原因。

依赖的两种来源

构建 Natron 所需的依赖要么专门为 Natron 编译(Natron SDK),要么直接使用发行版软件包。从仓库结构看,Natron 还自带一批随源码编译的第三方库(libs/目录下的 gflags、glog、ceres、libmv、openMVG、qhttpserver、hoedown、libtess 等),它们由根级 Project.pro 以 subdirs 模板统一编排,依赖关系为:glog.depends = gflags、ceres.depends = glog gflags、libmv.depends = gflags ceres、openMVG.depends = ceres、Engine.depends = libmv openMVG HostSupport libtess ceres、Renderer.depends = Engine、Gui.depends = Engine qhttpserver、Tests.depends = Gui Engine、App.depends = Gui Engine。

构建完整的 Natron SDK

官方二进制使用 Natron SDK 构建。构建脚本位于仓库的tools/jenkins目录下,执行:

cd tools/jenkins include/scripts/build-Linux-sdk.sh

脚本将 SDK 安装到默认位置/opt/Natron-sdk(该目录必须对当前用户可写),并把构建日志与每个软件包安装的文件清单存放在/opt/Natron-sdk/var/log/Natron-Linux-x86_64-SDK或/opt/Natron-sdk/var/log/Natron-Linux-i686-SDK。部分软件包(尤其是 Qt 4.8.7)带有 Natron 专属补丁,具体打了哪些补丁、用了什么配置选项都可以在 SDK 脚本中查到。

从源码看,该脚本还提供若干实用的环境变量开关:

环境变量作用
GEN_DOCKERFILE=1不实际构建,只输出 Dockerfile(用于生成 SDK 镜像)
LIST_STEPS=1输出构建步骤的有序清单
LAST_STEP=step_name只构建到指定步骤为止
FORCE_BUILD=1强制重建(即使已是最新)
DOWNLOAD=1只下载源码包不编译
TAR_SDK=1构建完成后把 SDK 打成 tar 归档
UPLOAD_SDK=1与TAR_SDK=1配合,把归档上传到远端仓库
MKJOBS并行编译线程数,默认 4

脚本内部会依次build大量软件包,链路清晰可见:先自举 GCC,然后是 bzip2、xz、expat、pkg-config、zlib 等基础工具,再到 python2/python3、Boost、OpenColorIO、OpenImageIO、SeExpr、ffmpeg 全家桶,最后是qt4、qt4webkit、shiboken、pyside、qt5、pyside2。其中每个软件包对应一个独立的构建脚本,全部位于 tools/jenkins/include/scripts/pkg/(如boost.sh、cairo.sh、qt5.sh、pyside2.sh等),你需要调整某个依赖的版本或补丁时,改的就是这些文件。

SDK 的更新方式很简单:拉取脚本的最新修改后重新执行一遍即可,脚本默认只重建需要更新的软件包,并自动处理依赖(例如软件包 B 依赖 A,A 重建后 B 也会被重建)。

使用 SDK 的环境设置

SDK 构建完成后,在你打算编译或运行 Natron 的每个 shell 中,都必须先执行 SDK 的环境设置脚本,确保 Natron 优先使用 SDK 内的库而不是系统库:

. path_to_Natron_sources/tools/utils/natron-sdk-setup-linux.sh

该脚本位于 tools/utils/natron-sdk-setup-linux.sh,它会设置PATH、LD_LIBRARY_PATH、LD_RUN_PATH、CPATH、PKG_CONFIG_PATH、PYTHONPATH、QTDIR等环境变量,并额外导出NATRON_PLUGIN_PATH、OFX_PLUGIN_PATH、OCIO,方便后续编译 OpenFX 插件、运行 Natron 与单元测试。注意:这个 source 操作必须在每一个打算编译/运行 Natron 的终端里重复执行。

参照 Travis 脚本安装 Ubuntu 依赖

仓库中的tools/travis/install_dependencies.sh与tools/travis/build.sh分别负责在 Ubuntu 18.04 (Bionic Beaver) 上安装依赖、构建 Natron 及标准插件集,用于官方 Travis CI 构建。你可以把它们当作一份可参考的 Ubuntu 依赖清单与config.pri生成示例,但文档明确提示:其产出的二进制不能保证完全可用,仅作参照。

手动安装依赖

如果不使用 SDK,则需要手工准备以下依赖,多数可通过发行版包管理器获取。

Qt 5.15

Qt5 构建只需 qtbase 库,一般直接用发行版包管理器安装(具体包名因发行版而异)。也可以从 Qt 官方归档的 5.15.4 子模块 tarball 或 KDE fork 自行从源码构建。

Qt 4.8

如果更倾向 Qt4,由于许多发行版已废弃 Qt 4,通常必须从源码构建。Qt 官方下载站的 4.8.7 源码归档是可用来源。注意:Natron 对 Qt 4.8.7 打了 Natron 专属补丁,SDK 脚本里有补丁细节可查。

Boost

Natron 编译需要boost serialization。可以用包管理器安装(注意还需boost_thread、boost_system等运行时库),也可以从 Boost 官网下载源码安装。从根级 CMakeLists.txt 可以看到 CMake 构建路径要求find_package(Boost COMPONENTS headers serialization CONFIG),即至少需要 Boost 的 headers 与 serialization 组件。

Expat

XML 解析库,直接用包管理器安装即可,包名因发行版而异。

Cairo

Natron 的旋转描边(rotoscoping)等功能依赖 Cairo,同样用包管理器安装。Travis 脚本注释中提到 cairo 1.12 是 rotoscoping 的硬性要求,可用 xorg-edgers PPA 获取更新版本。

PySide2 / Shiboken2

  • PySide2:Natron 在 Python 3 + Qt5 组合下使用 PySide2。
  • Shiboken2:Python 3 + Qt5 组合下的绑定生成器,生成器二进制(shiboken2)和头文件都必须安装,因为构建期要用它从 typesystem 描述文件生成 Python 绑定代码。

PySide / Shiboken(Qt4 组合)

  • PySide:Natron 在 Python 2 + Qt4 组合下使用 PySide,注意许多发行版已将其废弃。
  • Shiboken:Python 2 + Qt4 组合下的绑定生成器,同样已废弃。

QtPy

QtPy 是 PyQt5/PyQt4/PySide2/PySide 的抽象层,尽量用发行版包管理器安装,或用 pip:

pip install qtpy

配置阶段

构建前的配置是整个过程中最容易困惑的部分,主要包括三件事:OpenFX 子模块、OpenColorIO-Configs 配置包、以及config.pri依赖定位文件。

OpenFX 子模块

Natron 基于 OpenFX API 构建,构建前请确保其子模块是最新的:

git submodule update -i --recursive

仓库中的 OpenFX 相关代码位于 libs/OpenFX,此外还有 OpenFX 扩展定义在 libs/OpenFX_extensions。

下载 OpenColorIO-Configs

过去 OCIO 配置以子模块方式引入,但由于仓库体积过大,现在改为 tarball 发布。下载后请把它放到 Natron 仓库根目录:

wget https://github.com/NatronGitHub/OpenColorIO-Configs/archive/Natron-v2.4.tar.gz tar -xvzf Natron-v2.4.tar.gz mv OpenColorIO-Configs-Natron-v2.4 OpenColorIO-Configs

注意:如果解压出的目录名形如OpenColorIO-Configs-Natron-v2.4,必须重命名为OpenColorIO-Configs。

为了节省磁盘空间,可以只保留以下子目录:blender*、natron、nuke-default,其余全部删除:

cd OpenColorIO-Configs && rm -v !("blender"|"blender-cycles"|"natron"|"nuke-default") -R

为什么必须有它?从 OpenColorIO-Configs.pri 可以看到,qmake 构建会把OpenColorIO-Configs/blender、natron、nuke-default等目录作为OCIO.files安装到$PREFIX/share/OpenColorIO-Configs(macOS 下则打入 app bundle 的Contents/Resources/OpenColorIO-Configs),并且 tools/jenkins/build-natron.sh 在构建时也会自动下载对应版本的 OCIO 配置并软链接为OpenColorIO-Configs。Debian 系的 CMake 构建示例则使用Natron-v2.5版本包,说明该 tarball 的版本号会随主线演进,实际操作时以构建脚本中OCIO_CONFIGS_VERSION的推导逻辑为准。

config.pri:定位依赖的核心文件

config.pri用来告诉 .pro 工程文件各依赖库的位置,是整个构建流程中最容易让人困惑的部分。创建方法:在Project.pro同级的仓库根目录下创建config.pri文件,内容指向你系统上真实的库路径。

三个变量的含义:

  • INCLUDEPATH—— 头文件(include)路径;
  • LIBS—— 库文件路径/链接参数;
  • PKGCONFIG—— pkg-config 模块名。

一个典型的 Qt4 构建示例(可直接复制到终端执行):

----- copy and paste the following in a terminal ----- cat > config.pri << EOF boost-serialization-lib: LIBS += -lboost_serialization boost: LIBS += -lboost_thread -lboost_system expat: LIBS += -lexpat expat: PKGCONFIG -= expat pyside: PYSIDE_PKG_CONFIG_PATH = $$system($$PYTHON_CONFIG --prefix)/lib/pkgconfig:$$(PKG_CONFIG_PATH) pyside: PKGCONFIG += pyside pyside: INCLUDEPATH += $$system(env PKG_CONFIG_PATH=$$PYSIDE_PKG_CONFIG_PATH pkg-config --variable=includedir pyside)/QtCore pyside: INCLUDEPATH += $$system(env PKG_CONFIG_PATH=$$PYSIDE_PKG_CONFIG_PATH pkg-config --variable=includedir pyside)/QtGui EOF ----- end -----

这里的CONFIG 特性名: 指令语法是 qmake 的条件作用域:仅当该特性被启用(例如pyside特性开启)时才追加对应链接/包含参数。$$system(...)则在 qmake 解析期动态执行 shell 命令来探测 pkg-config 给出的真实路径。各发行版的具体示例在下面"发行版专项"一节给出,仓库中也提供了 Arch Linux 的现成模板(见 build-configs/arch-linux/config.pri)。

另外,构建脚本 tools/travis/install_dependencies.sh 里也演示了如何根据 Ubuntu 版本动态生成config.pri(例如对没有 expat.pc 的 Ubuntu 12.04 用expat: PKGCONFIG -= expat关闭 pkg-config 探测、改用-lexpat直连),可作为理解config.pri写法的第二份实例。

Nodes:默认节点插件仓库

Natron 的节点存放在独立仓库中,要使用默认节点集,必须额外构建以下仓库:

  • openfx-misc(默认的通用节点集合)
  • openfx-io(I/O 相关节点集合)

两者的安装说明见各自仓库的 README,且它们自身也带有子模块(openfx-io、openfx-misc都有 submodules),构建前需同步。插件安装位置有两种选择:

  1. 系统级:Linux 下安装到/usr/OFX/Plugins;
  2. 应用目录级:安装在可执行文件所在目录的父目录下名为Plugins的目录中,例如:
bin/ Natron Plugins/ IO.ofx.bundle

运行时插件搜索路径由OFX_PLUGIN_PATH等环境变量控制(见 tools/utils/natron-sdk-setup-linux.sh),构建产物中的 OFX 插件以.ofx.bundle目录形式出现。

构建

使用 qmake 构建

进入 Natron 目录后执行:

qmake -r make

如果依赖安装与配置都正确,应当能无错误地构建完成。如果系统里装了多个版本的 Qt,qmake 可能报错,此时 Qt5 构建可以改用:

QT_SELECT=5 qmake -r make

需要 DEBUG 构建时,把 qmake 调用改成:

qmake -r CONFIG+=debug

需要 Clang 编译时:

qmake -r -spec linux-clang

从 Project.pro 可以看出,qmake -r会递归处理HostSupport、gflags、glog、ceres、libmv、openMVG、qhttpserver、hoedown、libtess、Engine、Renderer、Gui、Tests、PythonBin、App这些子工程;如果启用CONFIG(enable-breakpad)还会额外包含breakpadpro.pri。

调试选项(来自 global.pri)

面向 Natron 开发者,global.pri 中定义了一组可用CONFIG+=<option>开启的调试选项:

CONFIG 选项作用(以源码注释/实现为准)
snapshot/alpha/beta/RC/stable设置构建版本形态,分别定义NATRON_CONFIG_SNAPSHOT等宏(构建农场专用)
custombuild自定义构建,需配合BUILD_USER_NAME,在 Natron 中显示自定义用户名(见 Project.pro 中isEmpty(CONFIG_SET)的提示)
openmp为 GCC 添加-fopenmp编译/链接参数,openMVG、ceres 等库会相应定义OPENMVG_USE_OPENMP、CERES_USE_OPENMP(见 libs.pri)
enable-breakpad启用 Breakpad 崩溃报告支持(Project.pro 据此包含 breakpadpro.pri)
addresssanitizer启用 AddressSanitizer(-fsanitize=address),自动附带 debug 配置
threadsanitizer启用 ThreadSanitizer(-fsanitize=thread,面向 clang)
coverage启用代码覆盖率(-fprofile-arcs -ftest-coverage -O0)
enforce-gcc8即使检测到 GCC 8.1/8.2 也强制继续构建(该版本在 release 构建下有已知 bug)
nopch禁用预编译头(debug 构建默认启用nopch)

例如:

qmake -r CONFIG+=debug CONFIG+=openmp CONFIG+=custombuild BUILD_USER_NAME="MyName"

此外 tools/jenkins/build-natron.sh 展示了官方构建农场使用的完整 qmake 参数形态:qmake -r CONFIG+=release ... QMAKE_CC=... QMAKE_CXX=...,并自动附加CONFIG+=enable-osmesa、CONFIG+=enable-cairo、CONFIG+=noassertions CONFIG+=fast(release 下)等选项,可作为自定义构建参数的风向标。

使用 CMake 构建

除了 qmake 外,仓库也支持 CMake 构建(Debian 系文档示例即采用该方式)。根级 CMakeLists.txt 声明的关键选项包括:

  • NATRON_QT6(默认 OFF):设为 ON 时使用 Qt6 6.3 + Shiboken6 + PySide6 构建;
  • NATRON_SYSTEM_LIBS(默认 OFF):设为 ON 时改用系统版本的 glog、Ceres 等依赖而非仓库内置库;
  • NATRON_BUILD_TESTS(默认 ON):构建 Natron 测试套件。

CMake 构建路径要求 Qt5 5.15(find_package(Qt5 5.15 CONFIG REQUIRED ...))、Shiboken2 5.15 与 PySide2 5.15,并要求find_package(Boost ... serialization)、find_package(Python3 ...),Linux 上还需 X11 与 Wayland(find_package(X11 REQUIRED)、find_package(Wayland COMPONENTS Client Egl))。典型流程:

mkdir ../build-Natron && cd ../build-Natron cmake ../Natron make -j8 make test

make test会运行 Tests 下的测试套件(CMake 顶层开启了enable_testing()),仓库中已有Curve_Test、Hash64_Test、Image_Test、Lut_Test、Tracker_Test、OSGLContext_Test、FileSystemModel_Test、KnobFile_Test等测试源文件可对照。

发行版专项

Arch Linux

Arch 系(含 Manjaro)有两种经过验证的编译方式:AUR 或手动编译。

方式一:AUR

yay -S natron-compositor

方式二:手动编译

先安装构建依赖。GCC、Expat、Boost 可直接从官方仓库安装:

sudo pacman -S expat boost-libs gcc

还需要额外的 Boost 库、cairo 与 Qt5(由 PySide2 提供):

sudo pacman -S boost cairo pyside2 python-pyqt

然后克隆仓库并同步子模块:

git clone https://github.com/NatronGitHub/Natron && cd Natron git submodule init git submodule update -i --recursive

创建构建目录:

mkdir build && cd build

创建空的config.pri(放在仓库根目录,即../config.pri),用编辑器按需修改。例如可以传入这类选项:

CONFIG += custombuild CONFIG += openmp DEFINES += QT_NO_DEBUG_OUTPUT

Qt4 场景下,把以下内容粘贴进空白的config.pri(仓库中已有模板,见 build-configs/arch-linux/config.pri,其头部注释注明适用于 Arch、Manjaro、ArcoLinux、Hyperbola 等发行版):

# These are the lines you should paste into your empty `config.pri` boost: LIBS += -lboost_serialization expat: LIBS += -lexpat expat: PKGCONFIG -= expat cairo { PKGCONFIG += cairo LIBS -= $$system(pkg-config --variable=libdir cairo)/libcairo.a } pyside { PKGCONFIG -= pyside INCLUDEPATH += $$system(pkg-config --variable=includedir pyside-py2) INCLUDEPATH += $$system(pkg-config --variable=includedir pyside-py2)/QtCore INCLUDEPATH += $$system(pkg-config --variable=includedir pyside-py2)/QtGui INCLUDEPATH += $$system(pkg-config --variable=includedir QtGui) LIBS += -lpyside-python2.7 } shiboken { PKGCONFIG -= shiboken INCLUDEPATH += $$system(pkg-config --variable=includedir shiboken-py2) LIBS += -lshiboken-python2.7 }

然后生成 Makefile 并编译。PREFIX=/usr指定安装前缀,BUILD_USER_NAME用于自定义构建,${CFLAGS}等透传发行版的编译优化参数:

qmake -r ../Project.pro PREFIX=/usr BUILD_USER_NAME="Arch Linux" CONFIG+=custombuild CONFIG+=openmp DEFINES+=QT_NO_DEBUG_OUTPUT QMAKE_CFLAGS_RELEASE="${CFLAGS}" QMAKE_CXXFLAGS_RELEASE="${CXXFLAGS}" QMAKE_LFLAGS_RELEASE="${LDFLAGS}"

或改用 Clang:

qmake -r ../Project.pro -spec linux-clang PREFIX=/usr BUILD_USER_NAME="Arch Linux" CONFIG+=custombuild CONFIG+=openmp DEFINES+=QT_NO_DEBUG_OUTPUT QMAKE_CFLAGS_RELEASE="${CFLAGS}" QMAKE_CXXFLAGS_RELEASE="${CXXFLAGS}" QMAKE_LFLAGS_RELEASE="${LDFLAGS}"

最后编译:

make

二进制位于build/App目录下,启动方式:

./App/Natron

Debian 系(Ubuntu / Linux Mint / KDE Neon / ElementaryOS 等)

用apt-get或apt安装依赖,在多数 Debian 系发行版上都能工作。

Ubuntu 22.04(Python 3.10 + Qt 5.15):

sudo apt install build-essential libboost-serialization-dev libboost-system-dev libexpat1-dev libcairo2-dev qt5-qmake qtbase5-dev python3-dev libshiboken2-dev libpyside2-dev python3-pyside2.qtwidgets python3-qtpy

Debian 12:

sudo apt install qtbase5-dev libboost-serialization-dev libboost-system-dev libexpat1-dev libcairo2-dev python3-dev python3-pyside2.qtcore libpyside2-dev libshiboken2-dev

大多数 Debian/Ubuntu 系通用:

sudo apt install qt5base-dev libboost-serialization-dev libboost-system-dev libexpat1-dev libcairo2-dev python3-dev python3-pyside2 libpyside2-dev libshiboken2-dev

Qt4 场景下使用的config.pri:

boost-serialization-lib: LIBS += -lboost_serialization boost: LIBS += -lboost_thread -lboost_system expat: LIBS += -lexpat expat: PKGCONFIG -= expat cairo: PKGCONFIG -= cairo pyside: PYSIDE_PKG_CONFIG_PATH = $$system($$PYTHON_CONFIG --prefix)/lib/pkgconfig:$$(PKG_CONFIG_PATH) pyside: PKGCONFIG += pyside pyside: INCLUDEPATH += $$system(env PKG_CONFIG_PATH=$$PYSIDE_PKG_CONFIG_PATH pkg-config --variable=includedir pyside)/QtCore pyside: INCLUDEPATH += $$system(env PKG_CONFIG_PATH=$$PYSIDE_PKG_CONFIG_PATH pkg-config --variable=includedir pyside)/QtGui

对于 Linux Mint,还需要额外添加:

pyside { PYSIDE_PKG_CONFIG_PATH = $$system($$PYTHON_CONFIG --prefix)/lib/pkgconfig:$$(PKG_CONFIG_PATH) PKGCONFIG += pyside INCLUDEPATH += $$system(env PKG_CONFIG_PATH=$$PYSIDE_PKG_CONFIG_PATH pkg-config --variable=includedir pyside)/QtCore INCLUDEPATH += $$system(env PKG_CONFIG_PATH=$$PYSIDE_PKG_CONFIG_PATH pkg-config --variable=includedir pyside)/QtGui }

获取源码与配置包(注意此处示例使用Natron-v2.5的 OCIO 配置包):

git clone https://github.com/NatronGitHub/Natron && cd Natron git submodule update -i --recursive wget https://github.com/NatronGitHub/OpenColorIO-Configs/archive/Natron-v2.5.tar.gz tar xzf Natron-v2.5.tar.gz mv OpenColorIO-Configs-Natron-v2.5 OpenColorIO-Configs

使用 CMake 构建:

mkdir ../build-Natron && cd ../build-Natron cmake ../Natron make -j8 make test

Fedora / RHEL 系

适用于 Fedora、Red Hat Enterprise Linux 及其衍生版,可用dnf或yum。RHEL 及衍生版需要先启用 EPEL 仓库:

yum install epel-release

或

dnf install epel-release

安装所需软件包:

yum install fontconfig-devel gcc-c++ expat-devel python-pyside2-devel shiboken2-devel qt5-qtbase-devel boost-devel pixman-devel cairo-devel

或

dnf install fontconfig-devel gcc-c++ expat-devel python-pyside2-devel shiboken2-devel qt5-qtbase-devel boost-devel pixman-devel cairo-devel

Qt4 场景下的config.pri:

boost-serialization-lib: LIBS += -lboost_serialization boost: LIBS += -lboost_thread -lboost_system PKGCONFIG += expat PKGCONFIG += fontconfig cairo { PKGCONFIG += cairo LIBS -= $$system(pkg-config --variable=libdir cairo)/libcairo.a } pyside { PYSIDE_PKG_CONFIG_PATH = $$system($$PYTHON_CONFIG --prefix)/lib/pkgconfig:$$(PKG_CONFIG_PATH) PKGCONFIG += pyside INCLUDEPATH += $$system(env PKG_CONFIG_PATH=$$PYSIDE_PKG_CONFIG_PATH pkg-config --variable=includedir pyside)/QtCore INCLUDEPATH += $$system(env PKG_CONFIG_PATH=$$PYSIDE_PKG_CONFIG_PATH pkg-config --variable=includedir pyside)/QtGui } shiboken { PKGCONFIG -= shiboken INCLUDEPATH += $$system(pkg-config --variable=includedir shiboken) LIBS += -lshiboken-python2.7 }

注意fontconfig与pixman也在依赖之列(对应fontconfig-devel、pixman-devel软件包),这正是 Fedora/RHEL 系与 Debian 系依赖清单的主要差异点。

生成 Python 绑定

一般情况下不需要手动生成 Python 绑定:Qt5 构建时绑定文件会在编译过程中自动生成,Qt4 构建所需的生成文件也已随仓库提交。只有在 Qt4 下需要扩展或修改Python 绑定时(修改typesystem.xml文件),才需要手动运行 shiboken。

如果使用 Qt4 的 PySide,命令行如下:

SDK_PREFIX=/usr # /opt/Natron-sdk if using the Natron SDK PYSIDE_PREFIX=/usr # /opt/Natron-sdk/qt4 if using the Natron SDK QT=4 rm Engine/NatronEngine/* Gui/NatronGui/* shiboken --avoid-protected-hack --enable-pyside-extensions --include-paths=../Engine:../Global:$SDK_PREFIX/include:$PYSIDE_PREFIX/include/PySide --typesystem-paths=$PYSIDE_PREFIX/share/PySide/typesystems --output-directory=Engine/Qt${QT} Engine/Pyside_Engine_Python.h Engine/typesystem_engine.xml shiboken --avoid-protected-hack --enable-pyside-extensions --include-paths=../Engine:../Gui:../Global:$SDK_PREFIX/include:$PYSIDE_PREFIX/include/PySide --typesystem-paths=$PYSIDE_PREFIX/share/PySide/typesystems:Engine:Shiboken --output-directory=Gui/Qt${QT} Gui/Pyside_Gui_Python.h Gui/typesystem_natronGui.xml tools/utils/runPostShiboken.sh Engine/Qt${QT}/NatronEngine natronengine tools/utils/runPostShiboken.sh Gui/Qt${QT}/NatronGui natrongui

注意:shiboken 有一些小瑕疵,需要若干 sed 命令修复,Qt4 下调用完 shiboken 后运行tools/utils/runPostShiboken.sh即可。

两个 typesystem 描述文件分别是 Engine/typesystem_engine.xml(引擎层绑定)与 Gui/typesystem_natronGui.xml(GUI 层绑定),对应的绑定入口头文件是 Engine/Pyside_Engine_Python.h 与 Gui/Pyside_Gui_Python.h。Qt5/PySide2 场景下,tools/jenkins/build-natron.sh 中演示了等价的shiboken2 -std=c++17 --avoid-protected-hack --enable-pyside-extensions ...调用链,并随后用python3 tools/utils/sourceCleanup.py ...清理生成代码,可作为对照参考。

收尾与运行验证

构建完成后,参照 SDK 环境脚本(tools/utils/natron-sdk-setup-linux.sh)给出的运行姿势,在启动前设置好运行时环境:

env FONTCONFIG_FILE="$NATRON/Gui/Resources/etc/fonts/fonts.conf" \ OCIO="$NATRON/OpenColorIO-Configs/blender/config.ocio" \ OFX_PLUGIN_PATH="$HOME/OFX/Plugins" \ NATRON_PLUGIN_PATH="$NATRON/Gui/Resources/PyPlugs" \ App/Natron

其中OCIO指向 OpenColorIO-Configs 中的 blender 色彩管理配置(即第 2 步下载并重命名到仓库根目录的目录),OFX_PLUGIN_PATH指向编译好的 OFX 插件位置,NATRON_PLUGIN_PATH指向仓库内置的 PyPlugs 目录(Gui/Resources/PyPlugs)。如需运行单元测试,仓库已在 Tests 中提供了多个针对曲线、哈希、图像、LUT、跟踪器等模块的测试用例,make test/make -C Tests即可直接验证构建产物的正确性。

  • 音视频
  • 视频处理
  • 图形学
  • 桌面应用

【免费下载链接】Natron

Open-source video compositing software. Node-graph based. Similar in functionalities to Adobe After Effects and Nuke by The Foundry.

项目地址:https://gitcode.com/gh_mirrors/na/Natron
点击查看免费下载
上一篇:完全掌握Balena Etcher:从零开始的跨平台镜像烧录专业指南
下一篇:Elvish高级编程技巧:闭包、高阶函数和函数式编程实践

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询