Makefile 正在生成libssh项目-目标模式不包含';%';
我正试图使用install.readme提供的说明将libssh-0.8.5安装到Ubuntu 16.04上。我按照所述的每一步进行操作,但在执行make命令构建项目后,我会遇到一个错误。错误如下:Makefile 正在生成libssh项目-目标模式不包含';%';,makefile,cmake,syntax-error,Makefile,Cmake,Syntax Error,我正试图使用install.readme提供的说明将libssh-0.8.5安装到Ubuntu 16.04上。我按照所述的每一步进行操作,但在执行make命令构建项目后,我会遇到一个错误。错误如下: [ 65%] Built target exec tests/CMakeFiles/ssh_ping.dir/flags.make:8: *** target pattern contains no '%'. Stop. CMakeFiles/Makefile2:1696: recipe for
[ 65%] Built target exec
tests/CMakeFiles/ssh_ping.dir/flags.make:8: *** target pattern contains no '%'. Stop.
CMakeFiles/Makefile2:1696: recipe for target 'tests/CMakeFiles/ssh_ping.dir/all' failed
make[1 ]: *** [tests/CMakeFiles/ssh_ping.dir/all] Error 2
Makefile:160: recipe for target 'all' failed
make: *** [all] Error 2
我已经研究并发现可能是make文件中的某个语法错误导致构建无法继续。我已经查看了给出问题的目标make文件,但似乎无法确定导致错误的原因
flag.make文件如下所示:
[ 65%] Built target exec
tests/CMakeFiles/ssh_ping.dir/flags.make:8: *** target pattern contains no '%'. Stop.
CMakeFiles/Makefile2:1696: recipe for target 'tests/CMakeFiles/ssh_ping.dir/all' failed
make[1 ]: *** [tests/CMakeFiles/ssh_ping.dir/all] Error 2
Makefile:160: recipe for target 'all' failed
make: *** [all] Error 2
问题似乎来自突出显示的粗体线条。有人能看到我遗漏了什么吗?在StackOverflow(和大多数其他类似网站)上,请将文本剪切并粘贴到您的问题中,并使用适当的标记工具设置格式,而不是附加包含文本的图像。后者很难阅读,我们无法将其剪切粘贴到我们的答案中,以显示哪里出了问题
不能在带引号的字符串和makefiles中嵌入换行符。Make完全面向行,根本不解析引号。因此,要做到这一点:
FOO = "bar
biz"
不是将包含换行符的值分配给变量FOO
的一行。相反,它被视为两行,第一行是将值“bar
分配给变量FOO
,第二行是语法错误,因为make无法将字符串baz”
解析为有效命令。在StackOverflow(和大多数其他类似站点)上,请将文本剪切粘贴到问题中,并使用适当的标记工具设置格式,而不是附加包含文本的图像。后者很难阅读,我们无法将其剪切粘贴到我们的答案中,以显示哪里出了问题
不能在带引号的字符串和makefiles中嵌入换行符。Make完全面向行,根本不解析引号。因此,要做到这一点:
FOO = "bar
biz"
不是将包含换行符的值分配给变量
FOO
的一行。相反,它被视为两行,第一行是将值“bar
分配给变量FOO
,第二行是语法错误,因为make无法将字符串baz”
解析为有效命令。显然ssh
没有正确安装在您的平台上,而cmake
依赖于它。我有点惊讶,cmake
本身在生成标志时没有引发错误。make
,但由于我没有使用cmake
,我不知道这是否是它的正常行为
无论如何,当cmake
试图检测您的OpenSSH版本时,它通过运行ssh
来检测,并得到一条错误消息,而不是它想要的版本号。此错误消息已插入生成的标志.make
Makefile中。因为此错误消息的第二行(如果它不在您问题中的图片中,我可以将其复制粘贴到此处)具有:
窗体,make试图将其解释为,但由于它不包含%
通配符,make引发了语法错误
如果您尝试在命令行上运行
/usr/bin/ssh-V
,会发生什么情况?显然ssh
没有正确安装在您的平台上,而cmake
依赖它。我有点惊讶,cmake
本身在生成标志时没有引发错误。make
,但由于我没有使用cmake
,我不知道这是否是它的正常行为
无论如何,当cmake
试图检测您的OpenSSH版本时,它通过运行ssh
来检测,并得到一条错误消息,而不是它想要的版本号。此错误消息已插入生成的标志.make
Makefile中。因为此错误消息的第二行(如果它不在您问题中的图片中,我可以将其复制粘贴到此处)具有:
窗体,make试图将其解释为,但由于它不包含%
通配符,make引发了语法错误
如果尝试在命令行上运行/usr/bin/ssh-V
,会发生什么