如何在 VS Code 中获取存储在 Docker 容器中的工具链标头的 IntelliSense?

问题描述 投票:0回答:1

我维护一个用 C++ 编写的遗留嵌入式 Linux 应用程序。该平台 SDK 采用包含交叉编译 (ARM) 工具链的 Ubuntu 18 虚拟机的形式。代码被检出到虚拟机中,以便拥有可用于编译的所有工具。

我已将工具链移至 Docker 容器(基于 Ubuntu 18),并从主机批量挂载源代码。有了这个,我可以使用 VS Code 作为编辑器,并使用 dev-containers 扩展在平台 SDK 环境中有效工作,VS Code IntelliSense 能够查看所有代码和平台/SDK 标头。

直到最近,这种方法一直运行良好,VS Code 1.86 逐步取消了对旧版本的支持(glibc < 2.28) hosts.

我尝试不在容器内运行 VS Code,而是简单地调用容器提供的编译过程。这可行,但有一个缺点,VS Code 无法再看到平台标头,因此不再提供 IntelliSense 并抱怨未知类型等。我考虑过将标头从工具链“导出”到我的 VS Code 源代码树中参考,但这似乎不是一个干净的解决方案。

进一步研究这一点,首选方法似乎是将工具链容器更新到较新的操作系统版本,以便可以使用开发容器。如果没有供应商支持(产品长期不受支持......),我必须解决任何问题,所以我还没有尝试这条路径。

我可以采用其他任何技术将旧工具链保留在 docker 中,但仍允许 VS Code IntelliSense 查看平台标头吗?

--更新--

目前我已经决定将工具链放在运行构建的容器中。为了帮助使用 IntelliSense,我只是添加了一个构建目标,它将工具链标头复制到已安装源中的指定位置,VSCode 已预先配置为进行搜索。是否意味着我需要在编辑器准备好之前运行“准备”构建设置,但其他方面工作正常。

c++ docker visual-studio-code embedded-linux toolchain
1个回答
0
投票

我能够使用 Dev Containers VS Code Extension 进行类似的组装工作,并遵循 教程,并从 VS Code 团队针对 C/C++ 的示例存储库开始。

© www.soinside.com 2019 - 2024. All rights reserved.