0
votes

I am trying to include and build source files from another project in my Eclipse CDT workspace for an Autotools project. I have tried the steps given in https://stackoverflow.com/a/20792721/4128201 to link the source (.cpp) and header (.h) files and https://stackoverflow.com/a/2305737/4128201 to build the source files in the referencing project by setting up Makefile.am, but I still get build errors related to discovery/linking of the files. For argument's sake I have the following workspace:

projectA/ 
        src/

projectB/ 
        src/

I want to include and build the source in projectB/src from projectA/src, so I have added projectA/src as "projecta" in projectB's

Properties->C/C++ General->Paths and Symbols->Source Location

which results in a new linked source folder in the Eclipse workspace project, ie:

projectA/
        src/

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

Now I can #include XYZ.h in projectB's source files and Eclipse finds the links, but when building I get the error:

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

projectA/src is included in Makefile.am as an AM_CXXFLAGS = -I$(projecta_dir) include, where projecta_dir is defined as a project Path Variable in

Properties->Resource->Linked Resources->Path Variables

as an absolute path to projectA/src. So I need to know if it is possible to direct Makefile.am to parent directories, and also if Symbolic Linked directories in Eclipse are valid for Makefile.am's accessing?

When rather defining projectA/src as a linked subdirectory in projectB/src to result in:

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

and directing Makefile.am (in projectB/src) to the subdirectory:

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

and including the header #include "projecta/XYZ.h" I still get the error:

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

and Eclipse's pop-up error also displays:

Unresolved inclusion: "projecta/XYZ.h"

For reference this is a Yocto Project ADT Autotools C++ Project that implements the GNU Autotools toolchain

1

1 Answers

1
votes

I've finally found a solution after looking at https://www.gnu.org/software/automake/manual/html_node/Include.html#Include and realising that I need to bypass the Eclipse symbolic link altogether. So now I reference projecta/src in projectb/src's Makefile.am as:

AUTOMAKE_OPTIONS = subdir-objects
bin_PROGRAMS = projectB
projectB_SOURCES = ... $(top_srcdir)/../projectA/src/XYZ.cpp

AM_CXXFLAGS = @projectB_CFLAGS@ -I$(top_srcdir)/../projecta/src