IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Build Metal-based Core Image kernels with Xcode -> 正文阅读

[开发工具]Build Metal-based Core Image kernels with Xcode

Apple 文档:
Building a Library with Metal’s Command-Line Tools
Metal Shading Language for Core Image Kernels

1. 在 Build Rules 结合 xcrun 编译生成Core Image 用的 kernel 文件

*.metal: .metal 格式文件
*.ci.metal: 是自定义的文件后缀格式.

1.工程引入两个文件:ColorLUT_1.ci.metal 和 ColorLUT_1.ci.metal, 文件内容一样,编译报错:
/Users/victor/Documents/MyDoc/MetalStudy/Code/MetalLib试验/air-lld:1:1: 3 duplicated symbols for target 'air64-apple-macosx12.1.0' air-lld command failed with exit code 1 (use -v to see invocation)

原因: 两个metal文件默认被编译到 default.metallib, 符号重复定义了。
2. 添加编译规则后报错:
cannot load '/Users/victor/Documents/MyDoc/MetalStudy/Code/MetalLib试验/ColorLUT_1.ci.metal': The file was not recognized as a valid object file
cannot load '/Users/victor/Documents/MyDoc/MetalStudy/Code/MetalLib试验/ColorLUT_2.metal': The file was not recognized as a valid object file

网上多数方法和Apple文档 Metal Shading Language for Core Image Kernels
是说在 Building Settings | Metal Compiler 中设置-fcikernel, 但是最新xcode 创建的项目中没有 Metal Compiler 生成选项。

注:当然也可以更改工程文件格式:见文档: Xcode 版本升级后找不到网上提到的相关配置了

解决参考Apple 课程Build Metal-based Core Image kernels with Xcode中的方法:
介绍如何在Build Rules编写脚本,而不是修改Build Settings.
具体来说,只需为 .ci.metal 和 .ci.air 编写脚本即可。
.ci.metal 是:

xcrun metal -c $MTL_HEADER_SEARCH_PATHS -fcikernel "${INPUT_FILE_PATH}" -o "${SCRIPT_OUTPUT_FILE_0}"

并配置输出文件:
$(DERIVED_FILE_DIR)/$(INPUT_FILE_BASE).air

.ci.air 是:

xcrun metallib -cikernel "${INPUT_FILE_PATH}" -o "${SCRIPT_OUTPUT_FILE_0}"

并配置输出文件:
$(METAL_LIBRARY_OUTPUT_DIR)/$(INPUT_FILE_BASE).metallib

看起来像这样:
在这里插入图片描述
在这里插入图片描述

补充:

  1. 添加编译规则后还是错误: cannot load ‘/Users/victor/Documents/MyDoc/MetalStudy/Code/MetalLib试验/ColorLUT_1.ci.metal’: The file was not recognized as a valid object file
    不知道为什么,我删除Demo新建后,成功了,可能之前的Demo有别的设置问题。
  2. 编译规则中常见变量输出:
echo "INPUT_FILE_NAME=$INPUT_FILE_NAME"
echo "DERIVED_FILES_DIR=$DERIVED_FILES_DIR"
echo "INPUT_FILE_BASE=$INPUT_FILE_BASE"
echo "INPUT_FILE_DIR=$INPUT_FILE_DIR"
echo "INPUT_FILE_PATH=$INPUT_FILE_PATH"
echo "SOURCE_ROOT=$SOURCE_ROOT"
echo "SCRIPT_OUTPUT_FILE_0=$SCRIPT_OUTPUT_FILE_0"
echo "MTL_HEADER_SEARCH_PATHS=$MTL_HEADER_SEARCH_PATHS"
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-03-11 22:25:26  更:2022-03-11 22:26:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 1:30:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码