gpt4 book ai didi

string - cmake 字符串标记包含检查

转载 作者:行者123 更新时间:2023-12-01 17:00:12 50 4
gpt4 key购买 nike

在cmake中,如何检查一个字符串标记是否包含在另一个字符串中?

就我而言,我想知道编译器的名称是否包含字符串“Clang”(例如“clang”、“AppleClang”...)。到目前为止我能做的就是:

if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
...
elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang")
...

我想要一种更灵活的方法,例如检查子字符串是否存在。

这是我在文档中可以找到的内容:

if( 匹配正则表达式)如果给定的字符串或变量的值与给定的正则表达式匹配,则为 True。
如果(更少)如果给定的字符串或变量的值是有效数字且小于右侧的数字,则为 True。
如果(更大)如果给定的字符串或变量的值是有效数字并且大于右侧的数字,则为 True。
如果(等于)如果给定的字符串或变量的值是有效数字并且等于右侧的数字,则为 True。
如果(无压力)如果给定字符串或变量的值按字典顺​​序小于右侧的字符串或变量,则为 True。
if( 更强 )如果给定字符串或变量的值按字典顺​​序大于右侧的字符串或变量,则为 True。
如果(STREQUAL)如果给定字符串或变量的值按字典顺​​序等于右侧的字符串或变量,则为 True。

最佳答案

if(<variable|string> MATCHES regex)可能就是您正在寻找的。

在这种特殊情况下(假设您在 ClangAppleClang block 内执行相同的操作),那么您可以替换:

if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
...
elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang")
...

与:

if(CMAKE_CXX_COMPILER_ID MATCHES "^(Apple)?Clang$")

关于string - cmake 字符串标记包含检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28532444/

50 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com