我想检查列表是否包含特定条目,如下面的代码片段:
macro(foo)
if ($(ARGN} contains "bar")
...
endif
endmacro()
Run Code Online (Sandbox Code Playgroud)
CMake不提供contains.获得理想结果的最佳/最简单方法是什么?
在CMake的wiki中,我找到了一个LIST_CONTAINS宏,但是wiki页面已经过时了.这仍然是最好的方式还是CMake获得了新功能?
sak*_*kra 54
使用CMake 3.3或更高版本,该if命令支持IN_LIST 运算符,例如:
if ("bar" IN_LIST _list)
...
endif()
Run Code Online (Sandbox Code Playgroud)
对于旧版本的CMake,您可以使用内置列表(FIND)功能:
list (FIND _list "bar" _index)
if (${_index} GREATER -1)
...
endif()
Run Code Online (Sandbox Code Playgroud)
ste*_*ire 10
线路较少:
if (";${ARGN};" MATCHES ";bar;")
# ...
endif()
Run Code Online (Sandbox Code Playgroud)
但是请参阅IN_LIST@sakra 的语法以获得更现代的语法.
| 归档时间: |
|
| 查看次数: |
16040 次 |
| 最近记录: |