在研究FreeSWITCH源码时,经常会看到有一些自定义的宏。例如下图中的OpenSSLVersion。
我试着寻找配置这些宏的地方,但没找到。后来在网上搜索了一番,好像得直接编辑vcxproj文件。
因此我就试着查看了vcxproj文件。我用notepad打开了Download OPENSSL工程的vcxproj文件。文件中发现了如下一些内容:
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\w32\openssl-version.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\w32\openssl-version.props" />
</ImportGroup>这里指示了另外一个文件:openssl-version.props。因此我又打开了openssl-version.props文件。
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros">
<OpenSSLVersion>1.0.1h</OpenSSLVersion>
</PropertyGroup>
<PropertyGroup>
<OpenSSLVersionImported>true</OpenSSLVersionImported>
</PropertyGroup>
<PropertyGroup />
<ItemDefinitionGroup />
<ItemGroup>
<BuildMacro Include="OpenSSLVersion">
<Value>$(OpenSSLVersion)</Value>
</BuildMacro>
</ItemGroup>
</Project>
显然这是一个XML文件。这里出现了刚才那个截图中的OpenSSLVersion宏以及它的值“1.0.1h”。
也就是说,每个工程里需要的宏都由一个XML的配置文件提供,并且在工程的vcxproj文件里指向这个配置文件。
本文探讨了在Visual Studio工程中如何管理和使用自定义宏,特别是在研究FreeSWITCH源码时遇到的OpenSSLVersion宏。通过查看vcxproj文件和引用的openssl-version.props配置文件,了解到宏的定义和配置方式,即通过XML配置文件来设定工程所需的宏。
6078

被折叠的 条评论
为什么被折叠?



