如何在Visual Studio项目中定义相对path?

我有一个库和一个使用库的控制台应用程序。 该库有一个包含源文件和头文件的文件夹。

我的项目是在一个孩子/内部目录,但我想包括的库目录是在父/上层目录。

我的项目目录:

H:\Gmail_04\gsasl-1.0\lib\libgsaslMain 

包括文件在这里:

 H:\Gmail_04\gsasl-1.0\src 

如何使用相对于项目目录的path来包含父/上目录中的文件夹?

如果我得到你的权利,你需要..\..\src

而不是使用相对path,你也可以使用VS的预定义macros来实现这一点。

$(ProjectDir)指向.vcproj文件的目录, $(SolutionDir).sln文件的目录。

打开项目时,您会看到一个可用的macros列表
属性→configuration属性→C / C ++→常规
并击中了三个点:

项目属性

在即将出现的对话框中,点击Macros查看Studio预定义的macros(请参阅MSDN的含义):

额外的包含目录

您可以input$(MACRO_NAME) (注意$和圆括号)来使用macros。

我以前使用过这样的语法:

 $(ProjectDir)..\headers 

要么

 ..\headers 

正如其他人指出的,起始目录是你的项目文件所在的目录( vcprojvcxproj ),而不是你的主代码所在的位置。

默认情况下,你定义的所有path都是相对的。 问题是:相对于什么? 有几个选项:1.在没有任何东西之前指定文件或path。 例如:“ mylib.lib ”。 在这种情况下,文件将在输出目录中被search。 但是,如果添加“.. \”,path将根据.sln文件所在的实际path进行计算。 请注意,在诸如$(SolutionDir)的macros之后,不需要添加反斜杠“\”。 只需使用$(SolutionDir)mylibdir \ mylib.lib 。 如果你不能使它工作,从记事本外部打开项目文件并检查它。

在Visual Studio 2013中,您可以查看任何源文件的属性。 通过解决scheme资源pipe理器单击该文件。

其中一个属性是“ 相对path ”。