我正在尝试从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 ++项目
答案 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