您似乎可以使用以下语法:
if(<variable|string> MATCHES regex)
根据文档(https://cmake.org/cmake/help/v3.0/command/if.html https://cmake.org/cmake/help/v3.0/command/if.html) 评估为
如果给定的字符串或变量的值与给定的正则匹配,则为 True
表达。
复制您的最小工作示例:
cmake_minimum_required(VERSION 2.8)
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DFOO" )
if( CMAKE_CXX_FLAGS_RELEASE MATCHES "-DFOO")
message("matching -DFOO")
message("${CMAKE_CXX_FLAGS_RELEASE}")
else( CMAKE_CXX_FLAGS_RELEASE MATCHES "-DFOO")
message("no -DFOO!!!")
message("${CMAKE_CXX_FLAGS_RELEASE}")
endif()
将打印
matching -DFOO
-O3 -DNDEBUG -DFOO
而以下
cmake_minimum_required(VERSION 2.8)
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}" )
if( CMAKE_CXX_FLAGS_RELEASE MATCHES "-DFOO")
message("matching -DFOO")
message("${CMAKE_CXX_FLAGS_RELEASE}")
else( CMAKE_CXX_FLAGS_RELEASE MATCHES "-DFOO")
message("no -DFOO!!!")
message("${CMAKE_CXX_FLAGS_RELEASE}")
endif()
将打印
no -DFOO!!!
-O3 -DNDEBUG
您可以使用以下方法获得类似的结果:
string(REGEX MATCH <regular_expression> <output variable> <input>)
or
string(FIND <string> <substring> <output variable>)
@usr1234567 之前在评论中建议的最后一个。
所以你可以把
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DFOO" )
在 - 的里面if()
声明作为解决方案。