首页 > 解决方案 > 对于解决方案中的不同配置,如何为解决方案中的项目指定不同的构建类型(DLL 或静态库)?

问题描述

我有一个包含多个项目和配置的 VisualStudio 解决方案。

对于其中一个项目,我想为不同的配置使用不同的配置类型(DLL 或静态库)。

例如,对于配置“Debug|Win32”,我想为该项目构建一个 DLL,而对于配置“Static Release|x64”,我想构建一个静态库。

当我尝试为这些配置之一设置配置类型时,这是为所有配置设置的类型,因此对于所有配置,它似乎总是“DLL”或所有配置的“静态库”。

我有一个例子,这可能会有所不同,我无法弄清楚这是如何实现的。还是您必须“破解” vcxproj 文件?

标签: dllconfigurationvisual-studio-2017static-libraries

解决方案


实际上,事实证明这是可能的,但是您需要编辑项目文件。

项目文件是 xml 格式,你应该找到这样的条目

<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">...</PropertyGroup>

PropertyGroup带有条件的情况下,添加ConfigurationType您需要的,例如

<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
  <PlatformToolset>v141</PlatformToolset>
</PropertyGroup>
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
  <PlatformToolset>v141</PlatformToolset>
</PropertyGroup>

变成

<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
  <PlatformToolset>v141</PlatformToolset>
  <ConfigurationType>StaticLibrary</ConfigurationType>
</PropertyGroup>
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
  <PlatformToolset>v141</PlatformToolset>
  <ConfigurationType>DynamicLibrary</ConfigurationType>
</PropertyGroup>

我发现这行得通,但像往常一样手动编辑 xml 时要小心,确保有备份,以防弄乱语法或 xml 嵌套。


推荐阅读