如何在Visual Studio Project中定义相对路径?

时间:2011-08-01 07:38:17

标签: c visual-studio visual-studio-2008 visual-c++

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

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

我的项目目录:

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

包含文件在这里:

H:\Gmail_04\gsasl-1.0\src

如何使用相对于项目目录的路径,包含父目录/上层目录中的文件夹?

5 个答案:

答案 0 :(得分:134)

您也可以使用VS的预定义宏来实现此目的,而不是使用相对路径。

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

打开项目时,您会看到可用宏列表,请转到
属性→配置属性→C / C ++→常规
并打了三个点:

project properties

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

additional include directories

您可以通过键入$(MACRO_NAME)来使用宏(请注意$回合括号)。

答案 1 :(得分:39)

如果我说得对,你需要..\..\src

答案 2 :(得分:20)

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

$(ProjectDir)..\headers

..\headers

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

答案 3 :(得分:5)

默认情况下,您定义的所有路径都是相对的。问题是:相对于什么?有几种选择:

  1. 指定前面没有任何内容的文件或路径。例如:" mylib.lib "。在这种情况下,将在输出目录中搜索该文件。
  2. 如果添加" .. \",将根据.sln文件所在的实际路径计算路径。
  3. 请注意,在诸如$(SolutionDir)之类的宏之后,不需要添加反斜杠" \"。只需使用 $(SolutionDir)mylibdir \ mylib.lib 即可。 如果您无法使其工作,请从记事本外部打开项目文件并进行检查。

答案 4 :(得分:0)

您需要了解一些提示。

考虑您的应用在 c:\MyRepository\MyApp 下运行

路径上的一个点表示应用运行的文件夹。因此,如果您想访问 MyApp 文件夹下的某个文件夹或文件(想象一下 c:\MyRepository\MyApp\Resources\someText.txt),您可以像 var bla = File.Exists(./Resources/someText.txt)

并且您可以使用双点 (..) 上一级考虑 c:\MyRepository\SomeFolder\sometext.txt 下的文件夹 对于 MyApp,它会像 var bla = File.Exists(../SomeFolder/someText.txt)

并且可以像 2,3,4.. 一样升级

../../SomeFolder(2 级)

../../../SomeFolder(3 级)

并且路径以无点开头表示驱动器根目录。 var bla = File.Exists(/SomeFolder/someText.txt) 将在我们的场景中查找 c:\SomeFolder\someText.txt。