CMAKE字符串比较失败

CMAKE字符串比较失败,cmake,Cmake,我想在我的CmakeList文件中选择性地添加一些库路径,方法是将变量设置为: set(MYLIBDIR "DEFAULT") 如果用户希望指定自定义目录,他将其更改为: set(MYLIBDIR /path/to/dir1 /path/to/dir2) 因此,为了检查用户是否确实提供了额外的目录,我检查: if(NOT ${MYLIBDIR} STREQUAL "DEFAULT") link_directories(${MYLIBDIR}) endif() 当我尝试这样做时,我从cma

我想在我的CmakeList文件中选择性地添加一些库路径,方法是将变量设置为:

set(MYLIBDIR "DEFAULT")
如果用户希望指定自定义目录,他将其更改为:

set(MYLIBDIR /path/to/dir1
/path/to/dir2)
因此,为了检查用户是否确实提供了额外的目录,我检查:

if(NOT ${MYLIBDIR} STREQUAL "DEFAULT")
 link_directories(${MYLIBDIR})
endif()
当我尝试这样做时,我从cmake得到一个错误。 在字符串比较之前,有没有办法连接变量的所有元素?

将我的注释转换为答案

连接列表只需在变量引用周围加引号即可:

if(NOT "${MYLIBDIR}" STREQUAL "DEFAULT")
就跟

if(NOT "/path/to/dir1;/path/to/dir2" STREQUAL "DEFAULT")
但我建议

if(NOT MYLIBDIR STREQUAL "DEFAULT")
有关更多详细信息,请参阅


您能同时给出您收到的错误消息吗?如果(不是MYLIBDIR STREQUAL“默认值”),您能试试吗?有关更多详细信息,请参阅和。错误为:
CMake error at CMakeLists.txt:264(if):如果给定参数:“NOT”“/path/to/dir1”“/path/to/dir2”“STREQUAL”“DEFAULT”指定了未知参数
非常感谢。我在您引用的第一个链接中找到了答案。我必须编写
if(而不是“${MYLIBDIR}”STREQUAL“DEFAULT”)
不客气。那么这是一个引用问题。我在下面的答案中列出了一些细节。我添加了一个链接,在本例中,它可能比前两个链接更好地解释了内部工作。