If statement CMake错误“;如果给出了参数;后接括号“1”;不是",&引用;等于;相似的
CMake从以下行发出错误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
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${}
在变量名周围添加,而不是引号。