在Eclipse CDT中使用*相对*路径引用第三方库 P>使用Eclipse CDT?< /P>中的相对路径引用第三方C++组件(例如,包含库)的最佳实践是什么? 我试图引用Boost和Google protobuf 我已将它们分别放在我工作区的文件夹中,例如/home/user/workspace/boost_1_39_9 我在项目属性的build settings下添加了对该文件夹的引用,但是eclipse不允许我将该路径指定为相对于工作区文件夹的路径,我必须使用文件系统选择该路径并指定一个绝对路径

在Eclipse CDT中使用*相对*路径引用第三方库 P>使用Eclipse CDT?< /P>中的相对路径引用第三方C++组件(例如,包含库)的最佳实践是什么? 我试图引用Boost和Google protobuf 我已将它们分别放在我工作区的文件夹中,例如/home/user/workspace/boost_1_39_9 我在项目属性的build settings下添加了对该文件夹的引用,但是eclipse不允许我将该路径指定为相对于工作区文件夹的路径,我必须使用文件系统选择该路径并指定一个绝对路径,c++,eclipse-cdt,C++,Eclipse Cdt,谢谢 亚历克斯 我不确定CDT生成设置的路径(不在我的计算机上),但您不能使用workspace变量吗?类似于:${workspace\u loc}/boost\u 1\u 39\u 9 编辑:好的,我做了一些搜索,找到了一些关于这些变量的信息。我认为您想要的是:${project\u loc:/boost\u 1\u 39\u 0}?Eclipse变量,例如${workspace\u loc}和${project\u loc}只适用于运行时Eclipse工作区中实际存在的东西。当您说您将这些

谢谢

  • 亚历克斯

我不确定CDT生成设置的路径(不在我的计算机上),但您不能使用workspace变量吗?类似于:${workspace\u loc}/boost\u 1\u 39\u 9


编辑:好的,我做了一些搜索,找到了一些关于这些变量的信息。我认为您想要的是:${project\u loc:/boost\u 1\u 39\u 0}?

Eclipse变量,例如${workspace\u loc}和${project\u loc}只适用于运行时Eclipse工作区中实际存在的东西。当您说您将这些文件放在文件系统的工作区下时,您是否真的将这些文件导入Eclipse(使用新项目;或者在现有项目中创建链接文件夹)

如果文件存在于文件系统中,但不存在于Eclipse本身中,那么Eclipse将只能使用绝对路径访问它们


顺便说一句,CDT有自己的变量:${WorkspaceDirPath}${ProjDirPath}${ProjName},它可以扩展到特定的文件系统位置。

我使用Preferences->General->Workspace->Linked Resources选项解决了这个问题

基本上,您可以定义一个指向工作区文件夹的变量

然后使用文件系统中的addfolder->Advanced->linktofolder将第三方文件夹添加到项目中,并使用变量。。。按钮使用先前创建的变量指向第三方文件夹(使用扩展按钮)

然后,只需将文件夹添加到项目设置中的include和library路径中


简单得像蛋糕一样只是一个想法。。您是否尝试过安装boost,使include位于/usr/include和/usr/lib/或/lib下。然后在构建首选项中添加这些路径。我也遇到过类似的问题,但后来我们通过使用自定义makefile解决了它。它对我们有效,因为我们已经有了定制的构建框架,只需要对现有的makefile做一些更改,然后将其复制到这个项目中

我试过了,但似乎不起作用。1.Eclipse不允许您创建这样的东西,它强制您选择${workspace\u loc}/[YourProjectName]/boost\u 1\u 39\u 0 2。如果我手动输入了你建议的,它似乎起作用,但是Eclipse找不到我的包含。我不打算在项目位置上增加Boost,因为Eclipse将想要构建它。我和C++的MySQL连接器有完全相同的问题——我已经编译它并把它放入一个额外的项目中,并将其添加到库搜索路径中,但eclipse坚持它找不到它!我将它复制到/usr/lib,它工作得很好。