CSharpUtilities

在 3.8 版本中添加。

使 CSharp/.NET 目标配置更轻松的函数。

一个 CMake 实用工具函数集合,用于处理 Visual Studio 2010 及更高版本的生成器中的 CSharp 目标。

此模块提供以下函数

主要函数

辅助函数

模块提供的主要函数

csharp_set_windows_forms_properties

设置用于 Windows 窗体的源文件属性。如果你的 CSharp 目标使用 Windows 窗体,请使用此函数

csharp_set_windows_forms_properties([<file1> [<file2> [...]]])
<fileN>

所有源文件的列表,这些文件与设置 VS_CSHARP_<tagname> 属性相关(包括 .cs.resx.Designer.cs 扩展名)。

在所有给定文件的列表中,搜索所有以 .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 目标使用 Windows 窗体(对于 Windows 窗体,请改用 csharp_set_windows_forms_properties()

csharp_set_designer_cs_properties([<file1> [<file2> [...]]])
<fileN>

所有源文件的列表,这些文件与设置 VS_CSHARP_<tagname> 属性相关(包括 .cs.resx.settings.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 目标使用 WPF/XAML,请使用此函数

csharp_set_xaml_cs_properties([<file1> [<file2> [...]]])
<fileN>

所有源文件的列表,这些文件与设置 VS_CSHARP_<tagname> 属性相关(包括 .cs.xaml.xaml.cs 扩展名)。

在所有给定文件的列表中,搜索所有以 .xaml.cs 结尾的文件。对于每个xaml-cs 文件,搜索具有相同基本名称但扩展名为 .xaml 的文件。如果找到匹配项,则设置 .xaml.cs 文件的源文件属性

  • VS_CSHARP_DependentUpon <xaml-filename>

以上函数使用的辅助函数

csharp_get_filename_keys

辅助函数,用于计算键值列表,以独立于 cmake 中给定的相对/绝对路径识别源文件,并消除大小写敏感性

csharp_get_filename_keys(OUT [<file1> [<file2> [...]]])
OUT

用于存储键列表的变量名称

<fileN>

使用 add_library()add_executable() 给定给 CSharp 目标的 filename(s)

在某种程度上,该函数将规范化应用于源名称。如果文件已使用不同的目录前缀添加到目标,则这是查找文件匹配项所必需的

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)

# this will fail, because in cmake
#  - ${CMAKE_CURRENT_SOURCE_DIR}/myfile.Designer.cs
#  - myfile.Designer.cs
# are not the same source file. The source file property is not set.
csharp_get_filename_key_base

返回键的完整文件路径和名称,不带扩展名。KEY 预计是来自 csharp_get_filename_keys 的键。在 BASE 中,返回不带文件扩展名的 KEY 值

csharp_get_filename_key_base(BASE KEY)
BASE

包含 KEY 计算出的“base”的变量名称。

KEY

将计算 base 的键。预计为大写完整文件名。

csharp_get_dependentupon_name

计算一个字符串,可以用作源文件属性 VS_CSHARP_<tagname> 的值,其中 targetDependentUpon

csharp_get_dependentupon_name(NAME FILE)
NAME

包含结果值的变量名称

FILE

要转换为 <DependentUpon> 值的文件名

实际上,这只是目前给定的不带任何路径的文件名。