c - GNU makefile 中的“文件过早结束”是什么意思?
问题描述
我正在尝试在makefile中练习if语句,但它一直说文件过早结束。代码:
test_rule:
if [ yes ]
echo "if works"
endif
输出:
make test_rule
/bin/sh: -c: line 1: syntax error : premature end of file
make: *** [Makefile:13: test_rule] Error 1
我尝试在线使用大量代码(例如将 [] 替换为 () 或在 echo 前添加 @),但没有任何效果。
解决方案
正如手册所解释的,您需要使用标签(默认情况下):
请注意:您需要在每个配方行的开头放置一个制表符!这是一个晦涩难懂的东西。如果您喜欢在食谱前加上制表符以外的字符,则可以将
.RECIPEPREFIX
变量设置为备用字符(请参阅特殊变量)。
因此,您需要编写:
foo:
gcc
换句话说,就是字符串foo:\n\tgcc\n
。
请注意,StackOverflow 在渲染 Markdown 时会将制表符转换为 4 个空格(但如果您尝试编辑此答案,您将看到制表符字符)。
推荐阅读
- gitlab - gitlab-runner 缓存文件大小每次都增加一倍
- python - 如何迭代字典中的值?
- arrays - 如何在 MATLAB 中使用元胞数组制作稀疏矩阵?
- python - 如何循环 NetCDF 时间序列
- java - (Box2dLights) 禁用某个纹理的光?
- php - 即使电子邮件已经存在,条件也不起作用并提交表单
- java - IllegalStateException No view found forFragment 在活动中替换片段时
- c# - 使用读/写检查连接到 NAS 服务器。模拟失败
- javascript - s3 未上传文件并收到 SignatureDoesNotMatch 错误
- javascript - 如何显示 3d 漏斗的连接器?