在 Eclipse 中引用外部文件:虚拟链接文件与项目属性中的构建设置?
Referencing external files in Eclipse: virtually linked files vs build settings in Project Properties?
网上和此处都有关于在 CDT Eclipse 中使用外部文件资源的主题的信息:C/C++ 和位于文件系统其他位置的 H 文件.所有描述的方法 运行 以及两种方法:
- 在项目中创建 space 指向的虚拟 linked 文件
实际文件的位置而不复制它们
- 添加外部引用资源的位置
项目->属性->C/C++ 通用->路径和符号 及相关
项目->属性-> C/C++ 构建(link 个文件夹和包含)
我不确定第一种方法在不添加第二种方法的情况下是否总是足够,但似乎第二种方法在没有第一种方法的情况下构建得很好。
我的问题是关于两者的比较。这些方法是打算类似地使用还是在某些情况下每种方法都是首选?
如果不应用另一种方法,是否每种方法都自给自足?
这个论坛帖子
https://www.eclipse.org/forums/index.php/t/1087314/ 建议对于包含文件,第一种方法可能还不够,因为构建设置仍应更新(第二种方法)以包含 linked H 文件...那么可能是第一种方法无关?
如果您想要编辑 externally-located 文件作为您项目工作的一部分,您通常会使用第一种方法,如果它们'只是您无需修改即可使用的依赖项。
在技术层面上,不同之处在于,使用第一种方法,文件将成为项目模型的一部分,例如,文件也将成为项目模型的一部分。在 Open Resource 中显示为候选人,而使用第二种方法他们不会。另一个区别是,使用第一种方法,文件是独立索引的,而使用第二种方法,文件仅通过被项目中的文件包含来索引(例如,这些目录中的 .cpp
文件通常不会'完全不能使用第二种方法进行索引)。
更新:评论中问题的回答
是否第一种方法在所有情况下都足够,无需更新路径和符号属性?
否,如果链接目录中有 header 个文件被项目中的文件包含,使用的包含路径与当前目录无关(因此不只是 #include "foo.h"
相同的目录,#include "../foo.h"
在 child 目录中,等等,但 #include <bar/foo.h>
在其他目录中),您仍然希望在 路径和符号中指定那些包含路径.
CDT 的索引器确实有一个 "Allow heuristic resolution of includes" 选项(在首选项 -> C/C++ -> 索引器中指定)可以让你避免将路径添加到 路径和符号,但请注意 (1) 这仅影响索引器,而不影响构建(如果您使用自己的 makefile 进行构建,这可能没问题),以及 (2)因为它是启发式的,所以它并不完美,例如如果您在不同的目录中有相同名称的 header,它可能会混淆。为了获得最佳准确性,我建议取消选中 "Allow heuristic resolution of includes",并始终明确指定包含路径。
如果引用文件不经修改按原样使用,第二种方法本身是否足够?
我不明白为什么不。
网上和此处都有关于在 CDT Eclipse 中使用外部文件资源的主题的信息:C/C++ 和位于文件系统其他位置的 H 文件.所有描述的方法 运行 以及两种方法:
- 在项目中创建 space 指向的虚拟 linked 文件 实际文件的位置而不复制它们
- 添加外部引用资源的位置 项目->属性->C/C++ 通用->路径和符号 及相关 项目->属性-> C/C++ 构建(link 个文件夹和包含)
我不确定第一种方法在不添加第二种方法的情况下是否总是足够,但似乎第二种方法在没有第一种方法的情况下构建得很好。
我的问题是关于两者的比较。这些方法是打算类似地使用还是在某些情况下每种方法都是首选?
如果不应用另一种方法,是否每种方法都自给自足?
这个论坛帖子 https://www.eclipse.org/forums/index.php/t/1087314/ 建议对于包含文件,第一种方法可能还不够,因为构建设置仍应更新(第二种方法)以包含 linked H 文件...那么可能是第一种方法无关?
如果您想要编辑 externally-located 文件作为您项目工作的一部分,您通常会使用第一种方法,如果它们'只是您无需修改即可使用的依赖项。
在技术层面上,不同之处在于,使用第一种方法,文件将成为项目模型的一部分,例如,文件也将成为项目模型的一部分。在 Open Resource 中显示为候选人,而使用第二种方法他们不会。另一个区别是,使用第一种方法,文件是独立索引的,而使用第二种方法,文件仅通过被项目中的文件包含来索引(例如,这些目录中的 .cpp
文件通常不会'完全不能使用第二种方法进行索引)。
更新:评论中问题的回答
是否第一种方法在所有情况下都足够,无需更新路径和符号属性?
否,如果链接目录中有 header 个文件被项目中的文件包含,使用的包含路径与当前目录无关(因此不只是 #include "foo.h"
相同的目录,#include "../foo.h"
在 child 目录中,等等,但 #include <bar/foo.h>
在其他目录中),您仍然希望在 路径和符号中指定那些包含路径.
CDT 的索引器确实有一个 "Allow heuristic resolution of includes" 选项(在首选项 -> C/C++ -> 索引器中指定)可以让你避免将路径添加到 路径和符号,但请注意 (1) 这仅影响索引器,而不影响构建(如果您使用自己的 makefile 进行构建,这可能没问题),以及 (2)因为它是启发式的,所以它并不完美,例如如果您在不同的目录中有相同名称的 header,它可能会混淆。为了获得最佳准确性,我建议取消选中 "Allow heuristic resolution of includes",并始终明确指定包含路径。
如果引用文件不经修改按原样使用,第二种方法本身是否足够?
我不明白为什么不。