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



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

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

无论如何,指定工具包或工具链/目标/等的cmake-kits.json方法是"正确"的方法吗? 或者这只是针对 VS Code 的。

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

工具包是 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工具是很好的。至于Eclipse CDT4 - Ninja的项目文件,我从未亲自使用过它们。

最新更新