在 Eclipse-CDT 中使用相对路径引用第 3 方 C++ 组件(例如,包括、库)的最佳做法是什么?
- 我正在尝试引用 Boost 和 Google protobuf。
- 我已将它们分别放在工作区的一个文件夹中,例如 /home/user/workspace/boost_1_39_9
- 我在项目属性的构建设置下添加了对该文件夹的引用,但是 Eclipse 不允许我将该路径指定为相对于工作区文件夹,我必须使用文件系统选择它并指定一个绝对路径
谢谢,
- 亚历克斯
在 Eclipse-CDT 中使用相对路径引用第 3 方 C++ 组件(例如,包括、库)的最佳做法是什么?
谢谢,
Eclipse 变量,例如 ${workspace_loc} 和 ${project_loc} 仅适用于实际在运行时 Eclipse 工作区中的事物。当您说将它们放在文件系统的工作区下时,您是否实际上将文件导入 Eclipse(使用新项目;或在现有项目中创建链接文件夹)?
如果文件存在于文件系统中但不存在于 Eclipse 本身中,那么 Eclipse 将只能使用绝对路径访问它们。
顺便说一句,CDT 有自己的变量: ${WorkspaceDirPath} ${ProjDirPath} ${ProjName} 扩展到特定的文件系统位置。
我不确定 CDT 构建设置的路径(不在我的计算机上),但你不能使用工作区变量吗?类似于:${workspace_loc}/boost_1_39_9
编辑:好的,我做了一些搜索并找到了关于这些变量的一些信息,here。我想你想要的是: ${project_loc:/boost_1_39_0} ?
我使用 Preferences->General->Workspace->Linked Resources 选项解决了这个问题。
基本上,您定义一个指向您的工作区文件夹的变量。
然后使用 Add folder->Advanced->Link to folder in the filesystem 将第三方文件夹添加到您的项目中,并使用 Variables... 按钮使用先前创建的变量指向第三方文件夹(使用扩展按钮)。
然后,您只需将文件夹添加到项目设置中的包含和库路径即可。
像蛋糕一样容易...:S
只是一个想法..您是否尝试过安装 boost 以使包含在 /usr/include 和 /usr/lib/ 或 /lib 下。然后只需在您的构建首选项中添加这些路径。我有类似的问题,但后来我们通过使用自定义 makefile 解决了它。它对我们有用,因为我们已经有了自定义构建框架,只需要对现有的 makefile 进行一些更改并将其复制到这个项目。