gpt4 book ai didi

json - CMakeLists 解析文件

转载 作者:行者123 更新时间:2023-12-04 01:41:14 28 4
gpt4 key购买 nike

我想在我的 CMakeLists 中解析一个文件(XML、JSON 或类似文件)并相应地设置一些变量。
例如,假设我有以下文件:

<root>
<Object>
<name = "my_name"/>
<url = "my_url"/>
</Object>
<Object>
<name = "another_name"/>
<url = "another_url"/>
</Object>
</root>
然后在我的 CMakeLists 中,我想设置一个包含所有名称的变量和另一个包含所有 url 的变量。
那可能吗?我在这个主题上没有找到太多。

最佳答案

从 CMake 3.19 开始,您可以使用 CMake 使用 string(JSON ...) 查询和修改 JSON 字符串。命令。
如果您有这样的 JSON 文件:

[
{
"name": "my_name",
"url": "my_url"
},
{
"name": "another_name",
"url": "another_url"
}
]
您可以读取该文件,并创建包含来自 JSON 文件的名称和 URL 的 CMake 变量。
# Read the JSON file.
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/myjson.json MY_JSON_STRING)

# Loop through each element of the JSON array (indices 0 though 1).
foreach(IDX RANGE 1)
# Get the name from the current JSON element.
string(JSON CUR_NAME GET ${MY_JSON_STRING} ${IDX} name)
list(APPEND MY_NAMES ${CUR_NAME})
# Get the URL from the current JSON element.
string(JSON CUR_URL GET ${MY_JSON_STRING} ${IDX} url)
list(APPEND MY_URLS ${CUR_URL})
endforeach()

message("MY_NAMES: ${MY_NAMES}")
message("MY_URLS: ${MY_URLS}")
此 CMake 代码打印:
MY_NAMES: my_name;another_name
MY_URLS: my_url;another_url

关于json - CMakeLists 解析文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46703437/

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