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

时间:2017-06-21 08:31:38

标签: eclipse-cdt autotools yocto

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

projectA/ 
        src/

projectB/ 
        src/

我想在projectA / src中包含和构建projectB / src中的源代码,所以我添加了projectA / src作为" projecta"在projectB'

属性 - > C / C ++一般 - >路径和符号 - >来源位置

导致Eclipse工作区项目中的新链接源文件夹,即:

projectA/
        src/

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

现在我可以在projectB的源文件中#include XYZ.h,Eclipse可以找到这些链接,但在构建时我会收到错误:

  

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

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

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

作为projectA / src的绝对路径。所以我需要知道是否可以将Makefile.am引导到父目录,以及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 

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

  

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

和Eclipse的弹出错误也会显示:

  

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

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

1 个答案:

答案 0 :(得分:1)

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