$(OutDir) 未设置为项目输出目录

$(OutDir) is not set to project Output directory

本文关键字:项目 输出 设置 OutDir      更新时间:2023-10-16

我在Visual Studio 2013中有一个C++/CLI dll项目,我正在尝试更改输出目录。我已将项目属性中的"输出目录"设置设置为$(SolutionDir)Stage$(Configuration)bin$(PlatformArchitecture)> 常规。我可以看到在 vcxproj 文件中,这反映到 OutDir:

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
  <LinkIncremental>true</LinkIncremental>
  <OutDir>$(SolutionDir)Stage$(Configuration)bin$(PlatformArchitecture)</OutDir>
</PropertyGroup>

但是,它似乎实际上并未被使用。在链接器>常规>输出文件下,默认值为 $(OutDir)$(TargetName)$(TargetExt) ,但在命令行下看到的$(OutDir)的扩展值并不反映我所做的更改,而是似乎具有$(SolutionDir)Stage$(ConfigurationName)的值($(ConfigurationName)例如"Debug_x64")。这很奇怪,因为它在 vcxproj-文件中不存在...

我需要做什么才能使输出目录中的更改影响$(OutDir)?我还注意到有一个宏$(OutDirWasSpecified),其值为 false...

我相信$(OutDir)通常在文件中设置:

C:Program Files (x86)MSBuildMicrosoft.Cppv4.0Platformsx64Microsoft.Cpp.x64.default.props

或者,如果在 32 位平台上:

...Win32Microsoft.Cpp.Win32.default.props

通常,您会在项目文件中找到:

我的项目.vcxproj

<Import Project="$(VCTargetsPath)Microsoft.Cpp.Default.props" />

如果您找到Microsoft.Cpp.Default.props文件,它将具有:

 <!-- Allow platforms to define the defaults first -->
 <Import Condition="Exists('$(VCTargetsPath)Platforms$(Platform)Microsoft.Cpp.$(Platform).default.props')" Project="$(VCTargetsPath)Platforms$(Platform)Microsoft.Cpp.$(Platform).default.props"/>

这就是$OutDir被引入的地方。

似乎这个包含链以某种方式被破坏了,或者$(OutDir)的原始定义在文件Microsoft.Cpp.x64.default.props中删除/修改了。

就其价值而言,我的Visual Studio 2013配置有点不同。我有一个根文件夹C:Program Files (x86)MSBuildMicrosoft.Cpp,下面是两个子文件夹,C:Program Files (x86)MSBuildMicrosoft.Cppv4.0V110C:Program Files (x86)MSBuildMicrosoft.Cppv4.0V120