CSharpUtilities¶
版本 3.8 新增。
此实用模块旨在简化 CSharp/.NET 目标的配置,并提供了一系列用于管理 CSharp 目标的命令,适用于 Visual Studio 生成器 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
(设计器文件) 或.resx
(资源文件) 结尾的相关文件对。对于每个此类文件,都会搜索相应的基本.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.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
源文件属性的值。