专业的编程技术博客社区

网站首页 > 博客文章 正文

CMake presets使用(cmake clang)

baijin 2024-10-03 17:16:34 博客文章 4 ℃ 0 评论

CMake可以使用presets来预设配置。根据CMake命令的不同类型,presets分为configure, build, test, package,新版的CMake,增加了workflow preset用来将以后的preset顺序执行。

首先我们可以创建一个简单的CMake项目。

只有一个CMakeLists.txt文件和一个main.cpp文件。

接着我们就可以创建presets配置文件CMakePresets.json

首先我们先创建一个configure preset

{
    "version": 6,
    "configurePresets": [
        {
            "name": "default",
            "displayName": "Default Config",
            "description": "Default Config Preset",
            "binaryDir": "${sourceDir}/build"
        }
    ]
}

接着我们就可以使用cmake命令来列出我们创建的configure preset了。

cmake --list-presets

这个configure preset就可以使用了。里面没有具体的配置,只是把CMake的输出目录配置了一下。

运行

cmake --preset default

configure preset定义完之后,我们需要定义build preset。 这里需要添加configurePreset字段,用于关联对应的configure preset

    "buildPresets": [
        {
            "name": "default",
            "displayName": "Default Build",
            "description": "Default Build Preset",
            "configurePreset": "default"
        }
    ]

定义完之后,我们就可以使用命令查看这个build preset的信息了。

cmake --list-presets=build

然后就能运行这个build preset了。

cmake --build --preset default

这样我们就有了configure/build两个preset,用于覆盖原来命令行的config/build操作。当然preset的本意,是希望你把复杂的参数放在配置里面,这里只是试验功能,没有额外添加其他参数。

有了这两个preset,我们可以看看定义workflow preset,用于合并两步操作。

定义default workflow preset, 先进行configure,然后build

    "workflowPresets": [
        {
            "name": "default",
            "steps": [
                {
                    "type": "configure",
                    "name": "default"
                },
                {
                    "type": "build",
                    "name": "default"
                }
            ]
        }
    ]

steps里面的name字段就是相应configure presetbuild preset里面的name字段。

这里好像我的VSCode CMake插件还不能正确识别workflowPresets

接着就可以列出这个workflow preset了。

cmake --workflow --list-presets

最后就可以直接运行这个workflow preset了,他会一次运行之前定义的configure presetbuild preset

cmake --workflow --preset=default

如果需要更新CMake Cache,可以添加fresh参数。

cmake --workflow --preset=default --fresh

随着CMake这两年的快速发展,presets功能也是基本完善了。方便了配置和调用CMake的方式。workflow preset也是把原来需要多条命令的执行,合并成了一套。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表