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
If statement CMake错误“;如果给出了参数;后接括号“1”;不是",&引用;等于;相似的_If Statement_Cmake - Fatal编程技术网

If statement CMake错误“;如果给出了参数;后接括号“1”;不是",&引用;等于;相似的

If statement CMake错误“;如果给出了参数;后接括号“1”;不是",&引用;等于;相似的,if-statement,cmake,If Statement,Cmake,CMake从以下行发出错误 if(NOT ($ENV{TnCfg} STREQUAL Linux_Build_Speech)) 错误是 CMakeLists.txt:37处的CMake错误(如果有): 如果给定参数: "NOT" "(" "STREQUAL" "Linux_Build_Speech" ")" 指定了未知参数 有什么问题吗?行是有效代码。可能您试图检查一个空变量。问题是$ENV{TnCfg},因为它是空的。CMake将变量名的值替换为它们的值,从而导致 if (NOT (STR

CMake从以下行发出错误

if(NOT ($ENV{TnCfg} STREQUAL Linux_Build_Speech))
错误是

CMakeLists.txt:37处的CMake错误(如果有):

如果给定参数:

"NOT" "(" "STREQUAL" "Linux_Build_Speech" ")"
指定了未知参数


有什么问题吗?行是有效代码。

可能您试图检查一个空变量。问题是
$ENV{TnCfg}
,因为它是空的。CMake将变量名的值替换为它们的值,从而导致

if (NOT (STREQUAL Linux_Build_Speech))
if(NOT ("" STREQUAL Linux_Build_Speech))
这是无效的,CMake希望参数在
STREQUAL
的左边

在变量周围加引号

if(NOT ("$ENV{TnCfg}" STREQUAL Linux_Build_Speech))
修复了该问题,因为它被替换为“”导致

if (NOT (STREQUAL Linux_Build_Speech))
if(NOT ("" STREQUAL Linux_Build_Speech))

空字符串是一个有效参数。

请在问题中包括CMakeLists.txt文件的第37行。可能您试图检查一个空变量。例如,如果(${var}STREQUAL“foo”)导致空
var
的错误。更改为if(${var}STREQUAL“foo”)可以解决问题,因为CMake看到了空变量,不再感到困惑。第37行:if(NOT($ENV{TnCfg}STREQUAL Linux_Build_Speech))。那么我应该将其更改为if(NOT($ENV{TnCfg}STREQUAL Linux_Build_Speech))?对于其他从谷歌找到这一点的人,请注意,关键字中的拼写错误将给出相同的错误消息。感谢您的回答,不幸的是没有做到这一点,因为可能还有其他隐藏的问题。因此,我只是在删除了前一个版本后签出了存储库的新版本。现在它构建正确了。不管怎样,我认为当前的问题也会对其他人有用。请接受答案,那么很明显您不再寻求答案。“在变量周围加引号…”-这也会导致CMake中违反策略。消息是“未设置策略CMP0054:仅在未加引号时将if()参数解释为变量或关键字。”@jww:Add
${}
在变量名周围添加,而不是引号。