Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Makefile 正在生成libssh项目-目标模式不包含';%';_Makefile_Cmake_Syntax Error - Fatal编程技术网

Makefile 正在生成libssh项目-目标模式不包含';%';

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

我正试图使用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 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
,会发生什么