【问题标题】:How to set a relative path/How to use $(SolutionDir)如何设置相对路径/如何使用 $(SolutionDir)
【发布时间】:2022-01-17 19:56:52
【问题描述】:

我正在尝试让一个项目无论在哪里克隆都可以编译,但我不知道如何编写与解决方案位置相关的相对路径,现在它看起来是这样的

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

【问题讨论】:

  • $(SolutionDir)\..\libraries\...。另外,考虑使用 vcpkg
  • 你能把它写成答案,这样我就可以把它标记为已解决?

标签: c++ path relative-path


【解决方案1】:

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

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

假设库名称为 cereal 且属性表位于 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 集成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    • 2019-05-03
    相关资源
    最近更新 更多