2011-08-01 180 views
45

我有一个库和一个使用库的控制台应用程序。该库有一个包含源文件和头文件的文件夹。如何在Visual Studio项目中定义相对路径?

我的项目位于子/内部目录中,但是我想包含的库目录位于父目录/上目录中。

我的项目目录:

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

包括文件的位置:

H:\Gmail_04\gsasl-1.0\src 

如何使用路径相对于项目目录,以包括在父/上一级目录文件夹?

回答

35

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

+5

我试过这个......但是它说找不到包含在这个文件夹中的文件。但是当我给出完整的路径时,它工作正常。 –

+0

也许项目目录不是你认为的那样?也许这是更深的一步? – MByD

+1

如果是这种情况,那我该怎么办?如果你对项目目录是正确的,那么路径应该是什么? –

111

而是使用相对路径的,你也可以使用VS的预定义宏来实现这一目标。

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

您打开一个项目时获得可用宏的列表,请访问
属性→配置属性→   C/C++ →一般
并击中了三个点:

project properties

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

additional include directories

您可以通过键入$(MACRO_NAME)使用宏(注意$括号中)。

+3

请注意,这些是**圆括号()**,_不是弯曲花括号{}。我错误地试图用后者的宏使用15分钟。 – hauzer

+1

@hauzer:谢谢你的提示。我将你的评论纳入我的答案。 – eckes

+1

你的主题太暗 –

14

我使用了一个语法像这样前:

$(ProjectDir)..\headers 

..\headers 

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

+0

它似乎在VS2013更新3中再次正常工作,不确定U2和U1。 – iFreilicht

+7

不应该($ ProjectDir)是$(ProjectDir)? –

-1

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

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

+1

没有这个选项不存在 – JerryGoyal

2

默认情况下,您定义的所有路径都是相对的。问题是:相对于什么?有几种选择: 1.指定一个文件或一个没有任何东西的路径。例如:“mylib.lib”。在这种情况下,将在输出目录处搜索该文件。 但是,如果添加“.. \”,路径将根据.sln文件所在的实际路径计算。 请注意,在诸如$(SolutionDir)之类的宏之后,不需要添加反斜杠“\”。只需使用$(SolutionDir)mylibdir \ mylib.lib。 如果您无法使用它,请从记事本外部打开项目文件并检查它。

相关问题