【问题标题】:How add include and library paths in Eclipse when using Docker containers使用 Docker 容器时如何在 Eclipse 中添加包含和库路径
【发布时间】:2020-02-22 01:54:48
【问题描述】:

我为 C/C++ Developers 2019-09 R (4.13.0) 安装了 Eclipse IDE,我想在 Docker 容器中构建我的 C++ 项目。

为此,我在项目属性中选中了“在 docker 容器中构建”复选框:

Eclipse build settings

完成后,Eclipse 会创建包含索引,并根据我的 docker 映像显示从 docker 容器加载的包含路径:

Include index

Eclipse 似乎只加载安装在 docker 镜像中的包含系统路径。 我想要的是使用默认系统包含路径之外的包含路径。我试图寻找某种包含配置或相关文档,但我没有找到任何东西。

在创建 docker 映像时,我尝试在 /usr/include 中创建指向外部(非默认)包含路径的软链接,但 Eclipse 也没有找到它们。

有什么想法吗?

提前致谢,

埃米利奥·加西亚

【问题讨论】:

    标签: eclipse docker eclipse-plugin eclipse-cdt docker-container


    【解决方案1】:

    一种方法是在预处理器包含路径提供程序的设置中包含容器内的路径。在检查“在 docker 容器内构建”之前(或在单击应用到该更改之前),转到“C/C++ 常规|预处理器包括路径、宏等”。在项目设置中并选择“提供者”选项卡。然后,单击“CDT Cross GCC 内置编译器设置”(或您选择的工具链的等效项)。在此之下,在“获取编译器规范的命令”框中,在最终的“{$INPUTS}”参数之前添加包含路径选项。例如,对于容器中包含 ROS Melodic 的文件,我使用了: ${COMMAND} ${FLAGS} -E -P -v -dD -I/opt/ros/melodic/include/ "${INPUTS}"

    当 CDT 从容器中复制所有包含文件时,该路径中的包含文件将被复制。

    我已经在使用 CDT 2021-03(版本 10.2.0)的 Makefile 项目中对此进行了测试

    【讨论】:

      【解决方案2】:

      使用项目属性 -> C/C++ 构建 -> 设置 -> 工具设置对话框在托管项目中设置包含路径。转到编译器包含树项并单击。从右侧,您可以添加包含路径以在构建中指定(例如 /usr/include/gtk-2.0) 创建软链接不会做任何事情,因为标头是从图像(不是您的本地系统)中使用的加上任何挂载的目录。

      请注意,如果您的包含路径属于某个包(例如 gtk2-devel),那么您需要在您的映像上安装该包。有几种方法可以做到这一点,但我喜欢在基础映像中启动一个 shell(docker run -it /bin/sh 或使用 Docker Views 菜单运行图标),然后在 shell 中使用适当的机制安装包( dnf,百胜,apt)。安装后,让容器保持运行并提交映像(使用 docker commit yourrepo:yourtag 或从 Docker 容器视图中的正在运行的容器的右键菜单中执行此操作)。然后,从现在开始在“容器设置”页面中指定要使用的新图像。

      如果标头是您编写的本地文件而不是项目中的文件,则将目录添加到 Container Settings -> Data Volumes 列表(您单击此处为托管项目启用容器构建)。这会将目录挂载到容器中,以便您的构建可以访问它。

      【讨论】:

      • 感谢杰夫的回复!我的意思是,我安装了一些依赖项,例如从源代码编译的 boost 1.58,并在创建 docker 映像时将它们放在与系统默认值不同的另一个位置。所以,我的 docker 镜像在 /usr/local/ieec/labs/dep/boost-1.58 中安装了 boost 1.58。所以我的意图是在 /usr/include/ 中创建指向该位置的软链接。我将尝试使用 Build -> Settings -> Tool Settings 添加包含。我认为这个选项旨在包括本地包含不包括在 docker 图像中的内容:D 再次感谢!
      • 你对这种方法有什么好处吗? Eclipse 似乎不会从容器中复制非标准目录。因此,即使您在工具设置中指定了包含目录,标题也将不可用。
      • 不,我认为唯一的解决方案是在系统默认路径中安装我的软件的依赖项:(
      猜你喜欢
      • 2011-02-11
      • 2012-05-25
      • 1970-01-01
      • 1970-01-01
      • 2011-05-06
      • 1970-01-01
      • 2019-07-12
      • 2021-05-08
      • 2011-02-14
      相关资源
      最近更新 更多