CSharpUtilities¶
版本 3.8 新增。
此实用模块旨在简化 CSharp/.NET 目标的配置,并提供了一系列命令来管理 CSharp 目标与 Visual Studio Generators(2010 及更高版本)的集成。
在 CMake 项目中加载此模块,使用
include(CSharpUtilities)
命令¶
本模块提供以下命令
主要命令
辅助命令
主要命令¶
- csharp_set_windows_forms_properties¶
为使用 Windows Forms 的源文件设置属性
csharp_set_windows_forms_properties([<files>...])
<files>...零个或多个源文件的列表,这些文件与设置
VS_CSHARP_<tagname>源文件属性相关。这通常包括带有.cs、.resx和.Designer.cs扩展名的文件。
当项目中的 CSharp 目标使用 Windows Forms 时,请使用此命令。
此命令在提供的文件列表中搜索以
.Designer.cs(designer 文件)或.resx(resource 文件)结尾的配对相关文件。对于每个此类文件,会搜索对应的基本.cs文件(具有相同的基本名称)。找到后,将按如下方式设置VS_CSHARP_<tagname>源文件属性:- 对于 .cs 文件
VS_CSHARP_SubType "Form"
- 对于 .Designer.cs 文件(如果存在)
VS_CSHARP_DependentUpon <cs-filename>VS_CSHARP_DesignTime ""(如果先前已定义,则删除该标记)VS_CSHARP_AutoGen ""(如果先前已定义,则删除该标记)
- 对于 .resx 文件(如果存在)
VS_RESOURCE_GENERATOR ""(如果先前已定义,则删除该标记)VS_CSHARP_DependentUpon <cs-filename>VS_CSHARP_SubType "Designer"
- csharp_set_designer_cs_properties¶
根据同级文件名设置
.Designer.cs文件的源文件属性csharp_set_designer_cs_properties([<files>...])
<files>...零个或多个源文件的列表,这些文件与设置
VS_CSHARP_<tagname>源文件属性相关。这通常包括带有.resx、.settings和.Designer.cs扩展名的文件。
如果 CSharp 目标 **不** 使用 Windows Forms,则使用此命令(对于 Windows Forms,请改用
csharp_set_windows_forms_properties())。此命令在提供的列表中搜索以
.Designer.cs(designer 文件)结尾的文件。对于每个此类文件,它会查找具有相同基本名称但扩展名不同的同级文件。如果找到匹配的文件,将根据匹配的扩展名在相应的.Designer.cs文件上设置适当的源文件属性。如果匹配的是 .resx 文件
VS_CSHARP_AutoGen "True"VS_CSHARP_DesignTime "True"VS_CSHARP_DependentUpon <resx-filename>
如果匹配的是 .cs 文件
VS_CSHARP_DependentUpon <cs-filename>
如果匹配的是 .settings 文件
VS_CSHARP_AutoGen "True"VS_CSHARP_DesignTimeSharedInput "True"VS_CSHARP_DependentUpon <settings-filename>
注意
由于 .Designer.cs 文件的源文件属性是根据找到的匹配项设置的,并且每个匹配项都会设置 VS_CSHARP_DependentUpon 源文件属性,因此每个 Designer.cs 文件应该只有一个匹配项。
- csharp_set_xaml_cs_properties¶
为使用 Windows Presentation Foundation (WPF) 和 XAML 的源文件设置属性
csharp_set_xaml_cs_properties([<files>...])
如果 CSharp 目标使用 WPF/XAML,则使用此命令。
<files>...零个或多个源文件的列表,这些文件与设置
VS_CSHARP_<tagname>源文件属性相关。这通常包括带有.cs、.xaml和.xaml.cs扩展名的文件。
此命令在提供的文件列表中搜索以
.xaml.cs结尾的文件。对于每个 XAML 代码隐藏文件,它会搜索具有相同基本名称但扩展名不同的相应.xaml文件。如果找到,则在.xaml.cs文件上设置以下源文件属性:VS_CSHARP_DependentUpon <xaml-filename>
辅助命令¶
这些命令由上述主要命令使用,通常不直接使用
- csharp_get_filename_keys¶
计算一个标准化的键值列表,用于独立于 CMake 中提供的相对或绝对路径来标识源文件,并消除大小写敏感性。
csharp_get_filename_keys(<variable> [<files>...])
<variable>存储计算出的键列表的变量名称。
<files>...零个或多个源文件路径,这些路径通过
add_library()或add_executable()等命令提供给 CSharp 目标。
此命令对文件路径进行规范化,以确保一致地标识源文件。当使用不同的路径形式将源文件添加到目标时,这一点非常有用。如果没有进行规范化,CMake 可能会将
myfile.Designer.cs和${CMAKE_CURRENT_SOURCE_DIR}/myfile.Designer.cs等路径视为不同的文件,这在设置源文件属性时可能会导致问题。例如,以下代码将无法设置属性,因为文件路径不完全匹配
add_library(lib myfile.cs ${CMAKE_CURRENT_SOURCE_DIR}/myfile.Designer.cs) set_source_files_properties( myfile.Designer.cs PROPERTIES VS_CSHARP_DependentUpon myfile.cs )
- csharp_get_filename_key_base¶
返回键的 **不包含** 扩展名的完整文件路径和名称
csharp_get_filename_key_base(<base> <key>)
<base>包含从
<key>计算出的基本值(不包含文件扩展名)的变量名称。<key>将计算其基本值的键。预期为来自
csharp_get_filename_keys()的大写完整文件名。
- csharp_get_dependentupon_name¶
计算一个字符串,该字符串可用作源文件属性
VS_CSHARP_<tagname>的值,其中<tagname>为DependentUpon。csharp_get_dependentupon_name(<variable> <file>)
<variable>包含结果值的变量名称。值包含
<file>的名称,不包含目录。<file>用于转换为源文件属性
VS_CSHARP_DependentUpon的值的<file>文件名。