eclipse cdt autotools 包括其他工作区项目源

eclipse cdt autotools include other workspace project source

我正在尝试在我的 Eclipse CDT 工作区中为 Autotools 项目包含和构建来自另一个项目的源文件。我已经尝试了 to link the source (.cpp) and header (.h) files and 中给出的步骤,通过设置 Makefile.am 在引用项目中构建源文件,但我仍然遇到与文件 discovery/linking 相关的构建错误。 为了争论的缘故,我有以下工作区:

projectA/ 
        src/

projectB/ 
        src/

我想在 projectB/src 中包含并构建来自 projectA/src 的源代码,因此我在项目 B 的

中添加了 projectA/src 作为 "projecta"

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

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

projectA/
        src/

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

现在我可以 #include XYZ.h 在项目 B 的源文件中并且 Eclipse 找到链接,但是在构建时我得到错误:

... fatal error: XYZ.h: No such file or directory

projectA/src 作为 AM_CXXFLAGS = -I$(projecta_dir) 包含在 Makefile.am 中,其中 projecta_dir 被定义为

中的项目路径变量

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

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

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

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

并将 Makefile.am(在 projectB/src 中)指向子目录:

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

包括 header #include "projecta/XYZ.h" 我仍然得到错误:

... fatal error: projecta/XYZ.h: No such file or directory

并且Eclipse的pop-up错误也显示:

Unresolved inclusion: "projecta/XYZ.h"

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

在查看 https://www.gnu.org/software/automake/manual/html_node/Include.html#Include 并意识到我需要完全绕过 Eclipse 符号 link 之后,我终于找到了解决方案。所以现在我在 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