如何在 VisualStudio 项目中定义相对路径?

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

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

我的项目目录:

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

包括文件在这里:

H:\Gmail_04\gsasl-1.0\src

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

215285 次浏览

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

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

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

当打开项目时,您将获得可用宏的列表,转到
属性 & rarr; 配置属性 & rarr; C/C + + & rarr; 一般
点击三个点:

project properties

在接下来的对话框中,点击 马克罗斯查看 Studio 预定义的宏(参考 MSDN了解它们的含义) :

additional include directories

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

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

$(ProjectDir)..\headers

或者

..\headers

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

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

  1. 指定文件或路径之前没有任何内容。例如: 「 Mylib.lib」。在这种情况下,将在 输出目录上搜索该文件。
  2. 如果添加“ . .”,则将从. sln 文件所在的实际路径计算路径。

请注意,在像 $(SolutionDir)这样的宏之后,不需要添加反斜杠“”。用 $(SolutionDir) mylibdir mylib.lib。 如果你只是不能让它工作,从记事本打开外部项目文件并检查它。

有几个提示你需要知道。

假设你的应用程序运行在 c: MyRepository MyApp 下

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

你可以用两个点(. .)上一层,想象一下 c: MyRepository SomFolder somtext.txt 下的一个文件夹 对于 MyApp 来说 var bla = File.Exists(../SomeFolder/someText.txt)

可以升到2,3,4级

. ./. ./有些文件夹(2层以上)

有些文件夹(三层以上)

在我们的场景中,var bla = File.Exists(/SomeFolder/someText.txt)将查找 c: somFolder somText.txt。