我有以下CMake代码:
add_library(iflib INTERFACE) target_compile_definitions(iflib INTERFACE GEN_EXP=$<IF:$<STREQUAL:"test","test">,"EQUAL","DIFFERENT"> )
这将GEN_EXP定义设置为“EQUAL”,正如预期的那样。
但是,当我与一个变量进行比较时:
add_library(iflib INTERFACE) set(TEST_VAR "test") target_compile_definitions(iflib INTERFACE GEN_EXP=$<IF:$<STREQUAL:${TEST_VAR},"test">,"EQUAL","DIFFERENT"> )
GEN_EXP的定义变为“不同”。
是否不可能在生成器表达式中进行这种比较?
对变量求值后,生成器表达式如下所示:
target_compile_definitions(iflib INTERFACE GEN_EXP=$<IF:$<STREQUAL:test,"test">,"EQUAL","DIFFERENT"> )
根据是否要检查变量值中的引号,您需要将引号添加到变量的内容中
set(TEST_VAR "\"test\"")
或者更改生成器表达式,删除要与之比较的值周围的引号
target_compile_definitions(iflib INTERFACE GEN_EXP=$<IF:$<STREQUAL:${TEST_VAR},test>,"EQUAL","DIFFERENT"> )