【发布时间】:2016-07-05 10:05:42
【问题描述】:
我想在我的 CMakeLists 文件中添加一些库路径,方法是将变量设置为:
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")吗?有关详细信息,请参阅 What's the CMake syntax to set and use variables? 和 CMake compare to empty string with STREQUAL failed。 -
错误是:
CMake Error at CMakeLists.txt:264 (if): if given arguments: "NOT" " /path/to/dir1" " /path/to/dir2" "STREQUAL" "DEFAULT" Unknown arguments specified -
哦,非常感谢。我在您引用的第一个链接中找到了答案。我不得不写
if(NOT "${MYLIBDIR}" STREQUAL "DEFAULT") -
不客气。然后这是一个引用问题。我在下面的答案中提供了一些细节。我添加了一个指向cmake: when to quote variables? 的链接,在这种情况下,它可能比前两个链接更好地解释了内部工作。
标签: cmake