CMake error “if given arguments” followed by paren

2019-01-26 17:20发布

问题:

CMake emits an error in from the following line

if(NOT ($ENV{TnCfg} STREQUAL Linux_Build_Speech))

The error is

CMake Error at CMakeLists.txt:37 (if):

    if given arguments:

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

Unknown arguments specified

What's the problem? The line is valid code.

回答1:

Probably you try to check an empty variable. The problem is $ENV{TnCfg} because it is empty. CMake replaces the value of the variable names by their values, leading to

if (NOT (STREQUAL Linux_Build_Speech))

That's not valid and CMake wants an argument left of STREQUAL.

Putting quotation-marks around the variable

if(NOT ("$ENV{TnCfg}" STREQUAL Linux_Build_Speech))

fixes the problem, because it gets replaced by "" leading to

if(NOT ("" STREQUAL Linux_Build_Speech))

and the empty string is a valid argument.