cmake 从变量中提取子字符串

时间:2021-01-22 19:46:34

标签: cmake

我有变量 CC_OPTIONS 的值设置如下

-arch arm64 -mcpu=abc1 -c --debug -O2 -static -fstack-protector -ffreestanding -nostartfiles -std=c11

我想从 CC_OPTIONS 中提取 -mcpu=abc1

尝试了以下方法,但得到的比我想要的要多。

string(REGEX REPLACE ".*mcpu=(.*)\ .*" "\\1" CPU_TYPE "${CC_OPTIONS}")

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

像这样:

cmake_minimum_required (VERSION 2.8.11)
project (HELLO)
set(CC_OPTIONS "-arch arm64 -mcpu=abc1 -c --debug -O2 -static -fstack-protector -ffreestanding -nostartfiles -std=c11")
message(${CC_OPTIONS})

string(REGEX MATCH "\\-mcpu=[^ $]+" CPU_TYPE ${CC_OPTIONS})
message(${CPU_TYPE})

示例:

$ cmake .
-arch arm64 -mcpu=abc1 -c --debug -O2 -static -fstack-protector -ffreestanding -nostartfiles -std=c11
-mcpu=abc1
-- Configuring done
-- Generating done
-- Build files have been written to: /home/ja/cmake

答案 1 :(得分:0)

如果您使用 if(MATCHES),您可以使用 CMAKE_MATCH_<n>

获取匹配的字符组
IEDoc.querySelector("a[rel^='26']")
IEDoc.querySelector("a[rel^='23']")
IEDoc.querySelector("a[rel^='19']")
IEDoc.querySelector("a[rel^='16']")
IEDoc.querySelector("a[rel^='12']")
IEDoc.querySelector("a[rel^='9']")
IEDoc.querySelector("a[rel^='5']")
相关问题