每个项目需要拥有配置 CMake 项目的 CMakeLists.txt 文件。您可以通过关注the official CMake tutorial 逐步了解更多信息。 Here's a tutorial on CMakeLists.txt files by CLion。
CmakePresets.json 是可选的 CMake 功能。它不是(正如您猜想的那样)Microsoft 特定的工具。它是一种工具,允许为通常一起使用的配置、构建、测试和打包设置编写预设。这就是它的用处。前任。填写option()变量(即定义的在项目的 CMakeLists.txt 文件中)。预设基本上是一种工具,无需为常见用户场景编写许多共同使用的命令行参数,而是为它们提供快捷方式/别名。
CMakeSettings.json 特定于 Visual Studio。您可以在专门使用 Visual Studio 构建项目时使用它。它具有与 CMakePresets.json 文件类似的功能,但更适合与 Visual Studio IDE 配置一起使用。
这是什么是预设以及它们何时有用的类比:想象一个项目就像一家三明治店,您可以在三明治中选择您想要的成分(配置项目构建时您想要选择的选项)。假设一家三明治店有(在许多其他配料中)培根、生菜、西红柿和黄瓜,这些都是您喜欢在三明治中加入的配料。可供选择的所有可能成分的列表是 CMakeLists.txt 文件。店家注意到很多人喜欢点培根、生菜、西红柿三明治,所以做了一个预设:“B.L.T.”。所以现在,您可以更快地告诉他们您想要什么:除了培根、生菜、西红柿和黄瓜,您可以说:“我想要 B.L.T. 加洋葱”。现在想象一家不同的商店,有更多的原料,而你经常用更多的原料订购同样的东西。你能看出这有什么用吗?现在 - 并非所有客户通常都想要同样的东西,“官方”预设由店主决定(项目维护人员将 CMakePresets.json 文件提交到他们的项目回购),但您可能想要一些自定义预设。这就是 CMakeUserPresets.json 文件的用途(从未承诺项目回购。在.gitignore)。
那么,如果您选择创建一个设置,您如何选择将哪些设置放入 CMakeLists.txt 与 CMakePresets.json 中?如果您 100% 确定某物(CMake 变量、环境变量等)的一个特定值将始终是要使用的所需值,并且没有人会想要任何不同的值,那么将其硬编码到 CMakeLists.txt 中。否则,请使用适当的机制(例如 option() 或 if(DEFINED ...))在 CMakeLists.txt 中定义具有可覆盖默认值的设置。