CMakeLists --- 字符串查找替换
一.字符串的查找和替换
1.查找
string(FIND <string> <substring> <output_variable> <result> [REVERSE])
使用说明:
从给定的string字符串中查找子字符串substring,返回子字符串在string中的位置
如果提供了REVERSE标记,则从string的末尾开始查找
如果没有找到则返回 -1,返回值保存在result中
例子:
#通过编译器名字判断是否编译android
string(FIND "$ENV{CC}" "aarch64-linux-android-gcc" BUILD_ANDROID) if(BUILD_ANDROID EQUAL -1) #message("***Build X86-64***") set(LINK_LIBS -lpthread -lrt) else() message("***Build Android***") set(LINK_LIBS -static-libgcc -static-libstdc++) endif()
说明:
string = "$ENV{CC}":系统环境变量CC的值
substring = "aarch64-linux-android-gcc":需要查找的子字符串
result = BUILD_ANDROID:查找的结果
2.替换
string(REPLACE <match_string> <replace_string> <output_variable> <input> [<input>...])
例子:
1.最基本的用法--只有一个input
set(MY_STR /abb/cc/dd/efg/cc/ddb) string(REPLACE cc xx RESULT ${MY_STR}) message(${RESULT}) # /abb/xx/dd/efg/xx/ddb
说明:
会将匹配的所有子字符串替换
2.多个input
set(MY_STR /abb/cc/dd/efg/cc/ddb) string(REPLACE cc xx RESULT ${MY_STR} --other/cc/bb/ff/dd) message(${RESULT}) # /abb/xx/dd/efg/xx/ddb--other/xx/bb/ff/dd
说明:
如果有多个input,output是所有input替换后再拼接起来...
如果RESULT有初始值,替换结果只是追加到初始值之后,并不会覆盖原来的值
参考:https://blog.51cto.com/u_12072082/5637340
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?