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

Ali*_*med 57 c visual-studio-2008 visual-studio visual-c++

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

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

我的项目目录:

H:\Gmail_04\gsasl-1.0\lib\libgsaslMain
Run Code Online (Sandbox Code Playgroud)

包含文件在这里:

H:\Gmail_04\gsasl-1.0\src
Run Code Online (Sandbox Code Playgroud)

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

eck*_*kes 145

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

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

打开项目时,可以获得可用宏的列表,转到
属性→配置属性→C/C++→常规
并点击三个点:

项目属性

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

其他包括目录

您可以通过键入使用宏$(MACRO_NAME)(注意$括弧).

  • 请注意,这些是**圆括号()**,_ not_曲线括号{}.我一直在错误地尝试使用后者的宏十五分钟. (4认同)
  • 你的主题太黑了 (4认同)

MBy*_*ByD 41

如果我找到你,你需要 ..\..\src

  • 我尝试过这个...但它说无法找到此文件夹中的包含文件.但是当我给出完整的路径时,它工作正常. (6认同)
  • `..\..\..\src`每个`..`返回一个目录. (5认同)

yva*_*den 22

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

$(ProjectDir)..\headers
Run Code Online (Sandbox Code Playgroud)

要么

..\headers
Run Code Online (Sandbox Code Playgroud)

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

  • 不应该($ ProjectDir)是$(ProjectDir)? (10认同)
  • 很好的答案。在 Microsoft Visual Studio Community 2017 上测试。 (2认同)

Mic*_*ati 6

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

  1. 指定之前没有任何内容的文件或路径.例如:" mylib.lib ".在这种情况下,将在输出目录中搜索该文件.
  2. 如果添加".. \",将根据.sln文件所在的实际路径计算路径.

请注意,在诸如$(SolutionDir)之类的宏之后,不需要添加反斜杠"\".只需使用$(SolutionDir)mylibdir\mylib.lib即可.如果您无法使其工作,请从记事本外部打开项目文件并进行检查.