Eclipse CDT 自动工具包括其他工作区项目源



我正在尝试在我的 Eclipse CDT 工作区中为一个 Autotools 项目包含和构建另一个项目的源文件。我已经尝试了 https://stackoverflow.com/a/20792721/4128201 中给出的步骤来链接源 (.cpp) 和头 (.h) 文件,https://stackoverflow.com/a/2305737/4128201 通过设置 Makefile.am 在引用项目中构建源文件,但我仍然收到与发现/链接相关的构建错误文件文件。 为了论证,我有以下工作区:

projectA/ 
src/
projectB/ 
src/

我想从项目A/src在项目B/src中包含并构建源代码,因此我将项目A/src添加为项目B中的"projecta"

属性->C/C++常规->路径和符号->源位置

这将在 Eclipse 工作区项目中生成一个新的链接源文件夹,即:

projectA/
src/
projectB/ 
src/
projecta/ (linked to projectA/src/)

现在我可以#include XYZ.hprojectB 的源文件,Eclipse 找到了链接,但在构建时出现错误:

。致命错误:XYZ.h:没有此类文件或目录

projectA/src 作为包含AM_CXXFLAGS = -I$(projecta_dir)包含在Makefile.am中,其中projecta_dir定义为项目中的项目路径变量

属性->资源>链接的资源->路径变量

作为项目A/src的绝对路径。所以我需要知道是否可以将Makefile.am定向到父目录,以及 Eclipse 中的符号链接目录是否对Makefile.am的访问有效?

当将 projectA/src 定义为 projectB/src 中的链接子目录时,会导致:

projectB/
src/
...
projecta/ (linked to projectA/src)

并将Makefile.am(在项目B/src中)定向到子目录:

AUTOMAKE_OPTIONS = subdir-objects
bin_PROGRAMS = projectB
projectB_SOURCES = ... projecta/XYZ.cpp 

并包括标题#include "projecta/XYZ.h"我仍然收到错误:

。致命错误:projecta/XYZ.h:没有这样的文件或目录

Eclipse 的弹出错误还显示:

未解决的包含:"projecta/XYZ.h">

作为参考,这是一个Yocto项目ADT Autotools C++项目,它实现了GNU Autotools工具链

在查看 https://www.gnu.org/software/automake/manual/html_node/Include.html#Include 并意识到我需要完全绕过 Eclipse 符号链接后,我终于找到了解决方案。所以现在我在projectb/src的Makefile.am中引用projecta/src为:

AUTOMAKE_OPTIONS = subdir-objects
bin_PROGRAMS = projectB
projectB_SOURCES = ... $(top_srcdir)/../projectA/src/XYZ.cpp
AM_CXXFLAGS = @projectB_CFLAGS@ -I$(top_srcdir)/../projecta/src

相关内容

最新更新