touchgfx recipe for target ‘assets‘ failed

博客记录了TouchGFX生成代码和资源的过程,生成资源时出现错误,报错信息显示无法加载文件。最终发现问题是工程文件名包含中文,解决办法是去掉中文,使用英文文件夹名。

Generate Code
    Generate
        Done
    Generate Assets
        make -f simulator/gcc/Makefile assets -j8
        Reading ./application.config
        generated/simulator/gcc/Makefile:219: recipe for target 'texts' failed
        D:/TouchGFX/4.15.0/env/MinGW/msys/1.0/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- lib/file_io (LoadError)
            from D:/TouchGFX/4.15.0/env/MinGW/msys/1.0/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:55:in `require'
            from touchgfx/framework/tools/textconvert/main.rb:101:in `<class:Main>'
            from touchgfx/framework/tools/textconvert/main.rb:26:in `<main>'
        make[1]: *** [texts] Error 1
        make[1]: *** Waiting for unfinished jobs....
        make: *** [assets] Error 2
        simulator/gcc/Makefile:32: recipe for target 'assets' failed
        Failed
    Failed

 

工程文件件名 有 中文,去掉中文,用英文文件夹名,
 

在构建或编译过程中,出现 `recipe for target 'clean' failed` 错误通常与 Makefile 的 `clean` 目标执行失败有关。该目标通常用于删除中间生成的文件(如目标文件 `.o`、依赖文件 `.d`、可执行文件等)。以下是一些常见的原因及解决方法: ### 1. 文件不存在或路径错误 当 Makefile 中指定的文件(如 `*.o`、`*.d` 或可执行文件)不存在或路径不正确时,`rm` 命令会失败。可以通过以下方式修复: - 确保 `clean` 目标中列出的文件名与实际生成的文件匹配。 - 如果文件路径不正确,可以调整 `rm` 命令中的路径,例如使用相对路径或绝对路径。 示例 Makefile 中的 `clean` 目标: ```makefile clean: -rm *.o -rm *.d -rm mktest ``` 确保上述文件名和路径与实际生成的文件一致[^2]。 ### 2. 文件权限问题 如果当前用户没有权限删除某些文件,`rm` 命令会失败。可以通过以下方式解决: - 使用 `sudo` 提升权限执行 `make clean`,例如: ```bash sudo make clean ``` - 确保文件的所有权正确,必要时使用 `chown` 修改文件所属用户。 ### 3. 文件正在被使用 如果某些文件正在被其他进程使用,`rm` 命令可能失败。可以通过以下方式解决: - 检查是否有其他进程正在使用这些文件,例如通过 `lsof` 命令查看: ```bash lsof | grep 文件名 ``` - 终止相关进程后再执行 `make clean`。 ### 4. Makefile 语法错误 Makefile 中的语法错误可能导致 `clean` 目标无法正确执行。可以通过以下方式检查: - 确保 Makefile 中的缩进使用的是 Tab 键而不是空格。 - 检查命令是否正确,例如 `gcc` 或 `rm` 的参数是否拼写正确。 ### 5. 使用 `-f` 参数忽略错误 如果希望即使某些文件不存在,`make clean` 也能继续执行,可以在 `rm` 命令中添加 `-f` 参数: ```makefile clean: -rm -f *.o -rm -f *.d -rm -f mktest ``` 这样即使文件不存在,`rm` 命令也不会报错[^2]。 ### 6. 手动清理文件 如果 `make clean` 仍然失败,可以手动删除相关文件: ```bash rm -f *.o *.d mktest ``` 确保删除所有生成的文件后,再重新运行 `make`。 ### 7. 检查 Makefile 的完整性 确保 Makefile 的结构完整,特别是 `clean` 目标是否被正确定义。例如,以下是一个完整的 Makefile 示例: ```makefile C_FLAGS = SOURCE = main.c test.c OBJS_C = $(SOURCE:.c=.o) DEP = $(SOURCE:.c=.d) mktest: $(OBJS_C) @echo "objects is" "$(OBJS_C)" gcc $(OBJS_C) -o mktest -include $(DEP) %.o: %.c @echo "start making objs" gcc -c $< -o $@ %.d: %.c @echo "Making $@ ..." @set -e; gcc -E -MM $(filter %.c, $^) > $@ clean: -rm -f *.o -rm -f *.d -rm -f mktest ``` ### 8. 使用 `make -B` 或 `make -f` 强制重新构建 如果 Makefile 的依赖关系出现问题,可以尝试强制重新构建: ```bash make -B ``` 或者指定 Makefile 文件: ```bash make -f Makefile ``` ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值