如何使快照 "parts:" 的输出可用于 "apps:"?

How to make the output of a snap "parts:" available to "apps:"?

apps:
  library-sample:
    command: library_sample

parts:
  library:
    source: https://github.com/the/sample.git
    plugin: cmake

当 snapcraft 运行 cmake 安装时,"library" 将安装在系统上(如我所料)。此外,cmake 还将在 build 目录下的 samples 文件夹中生成一个测试应用程序。

我想将示例(由 "part" 生成)升级为安装在 snap 包中的应用程序。

如何使用 snap YAML 从 build 文件夹下的嵌套目录移动到 snap /bin 文件夹?

您可以利用 Snapcraft 的 scriptlets 来做到这一点。具体来说,install 小脚本。它们本质上允许您通过自定义部分来修改构建过程的行为。在 build 生命周期步骤中,snapcraft 本质上是 运行s cmake && make && make install,但 make install 并没有做你想让它做的一切。 install 小脚本 运行 紧跟在 make install 之后,因此您可以这样做:

parts:
  library:
    source: https://github.com/the/sample.git
    plugin: cmake
    install: |
      cp -r path/to/samples $SNAPCRAFT_PART_INSTALL/

现在再次使用 snapcraft clean -s build 和 运行 snapcraft 清理构建步骤。然后 samples 目录将在最后的 snap 中结束。