关于通过SPM安装Sourcery时执行命令遇到找不到文件问题的求助
我之前踩过Sourcery通过SPM安装的同款坑,给你几个排查和解决的思路,应该能帮到你:
先确认路径指向的是可执行文件,而非文件夹
你执行swift build -c release后,生成的sourcery可执行文件是在.build/release/目录下的。如果你把整个release文件夹复制到了项目根目录,那运行命令得写./release/sourcery——要精准指向文件夹里的可执行文件,而不是只写./release(终端会把它当成文件夹,自然找不到可执行命令)。嫌麻烦的话,也可以直接把.build/release/sourcery这个单独的可执行文件复制到项目根,之后直接运行./sourcery就行。检查并添加执行权限
复制过来的可执行文件有时候会丢失执行权限,终端会提示“找不到文件”或者“权限不够”。你可以先给文件加上执行权限:chmod +x ./release/sourcery(如果是直接复制了单个
sourcery文件,就用chmod +x ./sourcery),加完权限再试试运行命令。注意相对路径的写法
别直接写release/sourcery或者sourcery,一定要加上开头的./,不然终端会去系统的全局PATH里找这个命令,而不是你项目目录里的文件。比如正确的相对路径写法是./release/sourcery,或者你也可以直接写绝对路径(比如/Users/你的用户名/你的项目路径/release/sourcery)。更省心的替代方案:直接用SPM运行
其实不用手动复制可执行文件这么麻烦,你可以直接在项目的Package.swift里把Sourcery作为依赖添加,之后在项目根目录下直接执行swift run sourcery就能运行,完全不用处理文件复制和路径问题,我现在自己开发都是这么用的,省了好多事。最后检查当前终端的工作目录
先在终端里执行pwd,看看当前所在的目录是不是你的项目根目录。如果不是,用cd命令切换到项目根目录后再运行Sourcery的命令,不然相对路径肯定找不到文件。
内容来源于stack exchange

