我在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/