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

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

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

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

最佳答案

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

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\x64\Microsoft.Cpp.x64.default.props

或者,如果在32位平台上,则:
...\Win32\Microsoft.Cpp.Win32.default.props

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

MyProject.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文件中被擦除/修改。

关于c++ - $(OutDir)未设置为项目输出目录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22914951/

10-12 02:51