CMAKE字符串比较失败
我想在我的CmakeList文件中选择性地添加一些库路径,方法是将变量设置为: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
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")
有关更多详细信息,请参阅
CMake error at CMakeLists.txt:264(if):如果给定参数:“NOT”“/path/to/dir1”“/path/to/dir2”“STREQUAL”“DEFAULT”指定了未知参数
非常感谢。我在您引用的第一个链接中找到了答案。我必须编写if(而不是“${MYLIBDIR}”STREQUAL“DEFAULT”)
不客气。那么这是一个引用问题。我在下面的答案中列出了一些细节。我添加了一个链接,在本例中,它可能比前两个链接更好地解释了内部工作。