基于 visual studio 配置类型的预处理器定义

Preprocessor definitions based on visual studio configuration type

我在 Visual Studio 2019 年在做一个 C++ 项目,它应该能够被编译为可执行文件和 DLL。它是遗留代码,包含预处理器标志 AS_EXE 和 AS_DLL,这大概是我需要设置的标志。我只是不知道如何根据 Project -> Properties -> Configuration Properties -> General -> Configuration Type 中的不同值来执行此操作。我希望动态库 (.dll) 和应用程序 (.exe) 的值分别映射到两个预处理器定义 AS_DLL 和 AS_EXE。

我最近几天在 Google 上四处看了看,但运气不好。

如果能像在调试和发布之间切换时那样完成就好了,但我感觉它会更复杂一些。这甚至可以实现吗?如果是这样,我该怎么做?

您可以在 .vcxproj 中使用 ItemDefinitionGroup 节点的 Condition 属性。

<ItemDefinitionGroup Condition="'$(Configuration)'=='MyConfigForDLL'">
  <ClCompile>
    <PreprocessorDefinitions>AS_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
    ...
  </ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)'=='MyConfigForEXE'">
  <ClCompile>
    <PreprocessorDefinitions>AS_EXE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
    ...
  </ClCompile>
</ItemDefinitionGroup>

或者,从 GUI: