如何设置相对 path/How 以使用 $(SolutionDir)

How to set a relative path/How to use $(SolutionDir)

我试图使一个项目无论克隆到哪里都能编译,但我不知道如何写相对于解决方案位置的相对路径,现在看起来是这样

我用 $(SolutionDir) 尝试了一些东西,但我不知道如何从它后退一步并进入库文件夹,如当前绝对路径所示。有人可以解释我应该做什么或举个例子吗?

要从 $(SolutionDir) 退一步,您可以写 $(SolutionDir)\..\.

你也可以更深入地为你的库创建一个属性 sheet,这样如果你需要在另一个项目中使用这个库,你只需要包含一个.prop-文件到你的 .vcxproj.

假设库名称是 cereal 并且 属性 sheet 位于 libraries.prop 文件将如下所示:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemDefinitionGroup>
    <ClCompile>
      <AdditionalIncludeDirectories>$(MSBuildThisFileDirectory)\cereal\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ClCompile>
    <Link>
      <AdditionalLibraryDirectories>$(MSBuildThisFileDirectory)\cereal$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <AdditionalDependencies>cereal.lib;%(AdditionalDependencies)</AdditionalDependencies>
    </Link>
  </ItemDefinitionGroup>
</Project>

然后要在项目中使用它,请将其添加到 .vcxproj(您也可以为此使用 gui):

<ImportGroup Condition="..." Label="PropertySheets">
  ...
  <Import Project="..\..\..\libraries\cereal.props" />
</ImportGroup>

您还可以使用一些包管理器来大大简化您的生活,即 vcpkg 因为它与 Visual Studio 集成。