VS .props解析
属 性表文件类似于其他MSBuild项目文件并可以被包含在其他项目文件或其他属性表文件中。项目系统创建的属性表通常只包 含<ItemGroup>元素定义项和元数据和<PropertyGroup>元素定义属性。以下示例展示了由IDE创建的被命 名为MyPropertySheet的属性表单文件。属性表中定义一个叫MyUserMacro的用户宏,其值为example。此外,当打开该项目时, 用户定义的宏将被添加到用户的环境变量中。在项目文件中,用户宏及其值由元素<MyUserMacro>表示。而将用户宏添加到环境变量的指 令是由<EnvironmentVariable>元素表示的:
<?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">
<MyUserMacro>Example</MyUserMacro>
</PropertyGroup>
<PropertyGroup />
<ItemDefinitionGroup />
<ItemGroup>
<BuildMacro Include="MyUserMacro">
<Value>$(MyUserMacro)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
</ItemGroup>
</Project>
<Link>、<AdditionalDependencies> 分别表示编译文件路径,头文件路径,库文件路径,以及在linker节点下的附加项。
刚 好,在打开.vcxproj文件时也看到相关的元素,其实也就是说,你也可以在项目文件里做相同的设置,但这个设置只可用于当前项目,项目文件的这些元素 自然也可以用属性表文件中的值来替换。其实,.vcproj 文件中大部分的属性组和项定义组(item definition groups )往往在Microsoft.Cpp.Default.props文件导入之后出现。同样地,所有的targets在项目文件的最后被导入。然后就会有多 个属性组并且以特定的顺序出现,每个属性组都以它们的Labels属性来区别。因为这些文件都是MSBuild文件,而MSBuild所认可的顺序是最后 出现的将替代之前旧有的作为编译变量。这样就保证了属性表文件中的参数不会影响到工程中其他项目的特定的设置。只有为进行特定设置的项目才会使用属性表文 件(.props文件)中项目的值。
例外需要额外说明的是,为什么属性表文件中只有<ItemGroup> 和<PropertyGroup>这两个元素,这是因为在MSBuild引擎需要通过<ItemGroup>指定被用于构建的 项,如需要的文件,启用什么可执行文件等等;<PropertyGroup>通常用于指定名称/值对来声明属性对于构建的作用,或一些必要的 参数,如文件路径,是否使用某一参数等等
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:caffe中的props - Python技术站