gpt4 book ai didi

visual-studio-2010 - MSBuild/VS2010 : How to reference "RuntimeLibrary" compiler setting in a VS2010 "Property Sheet"

转载 作者:行者123 更新时间:2023-12-04 15:32:07 24 4
gpt4 key购买 nike

我正在编写一个 Visual Studio 2010 属性表来集成一个复杂的 3rd 方 C++ 库。

要确定我需要链接到我的项目的库的哪些部分(以及配置各种定义、包含、目录等),我的属性表需要确定项目当前配置的 C 运行时库(即“MultiThreaded”、“MultiThreadedDebug”、“MultiThreadedDLL”或“MultiThreadedDebugDLL”)。

然而,作为substantially similar question这里在 stackoverflow 上指出,这个 MSBuild 条件不起作用:

Condition = " '$(RuntimeLibrary)' == 'MultiThreadedDLL' "

提供了另一个选项,但它用于后续构建任务。在进行构建之前,我需要这个值。

我还搜索了 Google 和 Microsoft 的 MSDN 网站,寻找获得此值的方法,但结果为空。有任何想法吗?

最佳答案

由于无法通过 MSBuild 的 XML 直接获取配置的运行时库,因此我对项目文件进行了正则表达式。这是执行此操作的 XML PropertyGroup 片段:

<PropertyGroup Label="UserMacros">
<RuntimeLibraryRegex>
<![CDATA[<ItemDefinitionGroup Condition=".*']]>$(Configuration)\|$(Platform)<![CDATA['">(?:.*\n)*?.*<RuntimeLibrary>(.*)</RuntimeLibrary>(?:.*\n)*?.*</ItemDefinitionGroup>]]>
</RuntimeLibraryRegex>
<RuntimeLibrary>
$([System.Text.RegularExpressions.Regex]::Match($([System.IO.File]::ReadAllText($(MSBuildProjectFullPath))), $(RuntimeLibraryRegex)).Result('$1'))
</RuntimeLibrary>
</PropertyGroup>

现在问题中的条件语句将按原样工作。

此外,请注意,此 MSBuild 属性组 XML 不考虑运行时库默认值(例如,如果项目没有设置运行时库),但可以轻松实现。

关于visual-studio-2010 - MSBuild/VS2010 : How to reference "RuntimeLibrary" compiler setting in a VS2010 "Property Sheet",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12647593/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com