2

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"
        }
    ]
}

ここで、プリセットを選択するとしますrelease-foo1。これにより、特に次の変数がレンダリングされます。

  • binaryDir = "cmake-build-release-foo1"
  • FOO_VERSION = "1"
  • LD_LIBRARY_PATH = "/opt/foo/1.0/lib"

特定のプリセットについてこれらの結果を照会する方法はありますか? たとえば、 が与えられた場合release-foo1、結果の を知りたいとしbinaryDirます。

もちろん、JSON を自分で解析することもできますが、特に CMake によって相互参照と置換が行われているため、面倒に思えます。

4

1 に答える 1