首页 > 解决方案 > CMake 工具包 .... 它们只是用于 VS Code 还是我也会将它们用于其他环境?

问题描述

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

我正在寻找 CMake 来清理我们无法驯服的 gnu make 构建系统。我喜欢与 VS Code 的集成,但我无法将 IDE 指定给我们许多更棘手的 DSP 工程师和他们喜欢的编辑环境(我完全理解;我自己有点像 Visual Studio) .

无论如何,是指定工具包或工具链/目标/等的 cmake-kits.json 方法。“正确”的方式来做到这一点?还是仅适用于 VS Code。

如果它只是用于 VS Code,那么在 VSCode、eclipse 或命令行中放入新工具链(我们使用非 gnu 工具为 3 个不同的处理器进行交叉编译)的正确 CMake-y 方法是什么?

标签: eclipsevisual-studio-codecmakeembedded

解决方案


工具包是 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我从未亲自使用过的项目文件。


推荐阅读