and*_*eee 5 build cmake preset
我有一个CMakePresets.json利用继承和宏扩展的文件。这是摘录,实际上我使用了“Foo”的多个版本:
{
"configurePresets": [
{
"name": "default",
"hidden": true,
"generator": "Unix Makefiles",
"binaryDir": "cmake-build-${presetName}",
"environment": {
"PATH": "/opt/foo/$env{FOO_VERSION}/bin:$penv{PATH}",
"LD_LIBRARY_PATH": "/opt/foo/$env{FOO_VERSION}.0/lib"
},
"cacheVariables": {
"FOO_VERSION": "$env{FOO_VERSION}",
}
},
{
"name": "debug-foo1",
"inherits": "default",
"environment": { "FOO_VERSION": "1" }
},
{
"name": "release-foo1",
"inherits": "debug-foo1",
"cacheVariables": { "CMAKE_BUILD_TYPE": "Release" }
}
],
"buildPresets": [
{
"name": "debug-foo1",
"configurePreset": "debug-foo1"
},
{
"name": "release-foo1",
"configurePreset": "release-foo1"
}
]
}
Run Code Online (Sandbox Code Playgroud)
现在假设我选择预设release-foo1。这将呈现以下变量等:
binaryDir = "cmake-build-release-foo1"FOO_VERSION = "1"LD_LIBRARY_PATH = "/opt/foo/1.0/lib"有没有办法查询给定预设的这些结果?例如,给定release-foo1,我想知道结果binaryDir。
当然,我可以自己解析 JSON,但这似乎很乏味,特别是因为 CMake 正在进行交叉引用和替换。
您可以使用该-N标志来打印计算出的预设信息,而无需运行配置或生成步骤。修改问题中的预设文件以使其工作后,我在它旁边创建了一个空的***CMakeLists.txt 并运行此测试(代表我的PATH):
$ cmake --preset=release-foo1 -N
Preset CMake variables:
CMAKE_BUILD_TYPE="Release"
FOO_VERSION="1"
Preset environment variables:
FOO_VERSION="1"
LD_LIBRARY_PATH="/opt/foo/1.0/lib"
PATH="/opt/foo/1/bin:***"
Run Code Online (Sandbox Code Playgroud)
这足以调试您的预设。如果您需要更进一步,您可以使用标准 unix 命令行工具处理输出,例如awk、grep、cut等。
我认为这是您目前可以做的最好的事情(CMake <=3.21),因为在命令行文档或IDE 的文件 API中我找不到其他任何内容。
| 归档时间: |
|
| 查看次数: |
1899 次 |
| 最近记录: |