在Eclipse中引用外部文件:虚拟链接的文件与项目属性中的构建设置?

时间:2018-07-11 17:37:44

标签: eclipse resources settings eclipse-cdt

网络上以及与CDT Eclipse中使用外部文件资源有关的主题都在这里有信息:C / C ++和H文件位于文件系统中的其他位置。所有描述的方法都遵循两种方法:

  1. 在项目空间内创建指向的虚拟链接文件 实际文件的位置而不复制它们
  2. 将外部引用资源的位置添加到 项目->属性-> C / C ++常规->路径和符号及相关 Project-> Properties-> C / C ++构建(链接文件夹和包含文件)

我不确定在不添加第二种方法的情况下第一种方法是否总是足够的,但是似乎第二种在没有第一种方法的情况下构建良好。

我的问题是关于两者的比较。这些方法是打算类似使用还是在某些情况下首选每种方法?

每种方法在不应用另一种方法的情况下就足够了吗?

此论坛主题 https://www.eclipse.org/forums/index.php/t/1087314/建议,对于包含文件,第一种方法甚至可能还不够,因为构建设置仍应进行更新(第二种方法)以包含链接的H文件...那么可能与第一种方法无关?< / p>

1 个答案:

答案 0 :(得分:0)

如果要编辑作为项目工作的一部分,外部文件通常会使用第一种方法,如果它们只是依赖项而没有使用,则通常使用第二种方法修改。

在技术层面上,不同之处在于,采用第一种方法时,文件将成为项目模型的一部分,例如在开放资源中显示为候选,而在第二种方法中则不会。另一个区别是,使用第一种方法时,文件是独立索引的,而使用第二种方法时,文件的索引仅是由项目中文件所包含的(例如,这些目录中的.cpp文件通常不会完全无法使用第二种方法建立索引。

更新:评论中问题的答案

第一种方法是否在所有情况下都足够,而无需更新Paths和Symbols属性?

否,如果项目中的文件使用与当前目录不相关的包含路径(因此不仅仅是同一目录中的#include "foo.h",{{ 1}}在子目录中,等等,但在其他目录中是#include "../foo.h",您仍然想在路径和符号中指定这些包含路径。

CDT的索引器确实具有“允许包含的启发式解析”选项(在“首选项”->“ C / C ++”->“索引器”中指定),该选项可以使您避免将路径添加到路径和符号,但请注意,(1)仅影响索引器,而不影响构建(如果您使用自己的makefile进行构建,可能会很好),以及(2)启发式,它并不完美,例如如果您在不同目录中具有相同名称的标头,则可能会感到困惑。为了获得最佳准确性,我建议取消选中“允许启发式解析包括”,并始终明确指定包含路径。

如果引用的文件按原样使用而无需修改,第二种方法本身是否足够?

我不明白为什么。