CMake 工具包....它们只是用于 VS Code 还是我也可以将它们用于其他环境?

CMake kits .... are they just for VS Code or would I use them for other environments too?

背景:我在一家有很多偏好的公司工作。我们目前使用 makefile 进行复杂构建,开发人员选择 IDE(甚至 VIM)来编辑源文件。

我正在寻找 CMake 来清理我们无法驯服的 gnu make 构建系统。我喜欢与 VS Code 的集成,但我无法向我们许多比较挑剔的 DSP 工程师和他们偏爱的编辑环境(我完全理解;我有点 Visual Studio 伙计,我自己)。

反正就是cmake-kits.json指定工具包的方法还是toolchains/targets/etc。 "right" 的方法?还是仅适用于 VS Code。

如果仅适用于 VS Code,什么是正确的 CMake-y 方法来放入新的工具链(我们使用非 gnu 工具对 3 个不同的处理器进行交叉编译)可以在 VSCode 中工作,或者日食,或从命令行。

工具包是 VS Code 的 CMake 扩展的一部分。你想阅读 cmake-toolchains(7)。工具包类似于在环境中设置 CCCXX,因此 CMake 知道将哪个编译器用于 Makefile 和 Ninja 生成器。它与其他生成器不同,因为 IDE 可以控制使用哪个确切的编译器,并且您告诉 CMake 使用哪个工具集,它会相应地生成项目。仅供参考,工具包无法处理必须为交叉编译器编写自己的工具链文件的问题。

您可以使用工具链文件进行交叉编译。根据编译器以及它像 gcc 交叉编译器一样工作的程度,这可能很简单也很困难。如果它真的不同,一个工具链文件还不够,因为您需要更新平台项目以使其全部正常工作。由于这涉及到依赖于 CMake 实现的领域,因此没有很好的记录。但是 https://discourse.cmake.org/.

有帮助

您可以只使用 Ninja 作为构建工具。然后你设置你的工具链文件。在您最初 运行 在 CMake 上创建 Ninja 项目文件后,您可以 运行 Ninja 来构建软件。

然后很容易将您的 IDE 设置为仅调用 Ninja 来构建软件。

就个人而言,我不喜欢 VS Code 中的 CMake 集成(它只是一个附加组件)。对我来说,它总是太麻烦了,以至于我不想使用它。但这对于从构建中提取信息以正确设置 cpp-tools 很有用。至于 Eclipse CDT4 - Ninja 的项目文件,我从来没有亲自使用过。