CSharpUtilities

新增於 3.8 版本。

用於簡化 CSharp/.NET 目標設定的函式。

一組 CMake 實用函式,有助於處理 Visual Studio 2010 及更高版本產生器的 CSharp 目標。

此模組提供下列函式

主要函式

輔助函式

此模組提供的主要函式

csharp_set_windows_forms_properties

設定使用 Windows Forms 的原始檔屬性。如果您的 CSharp 目標使用 Windows Forms,請使用此函式

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 Forms,請使用此函式(對於 Windows Forms,請改用 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 目標的檔案名稱

在某種程度上,該函式對來源名稱應用正規化。如果檔案已使用不同的目錄前綴新增到目標,則此為尋找檔案匹配項所必需的

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> 的值的字串,其中 *target* 為 DependentUpon

csharp_get_dependentupon_name(NAME FILE)
NAME

具有結果值的變數名稱

FILE

要轉換為 <DependentUpon> 值的檔案名稱

實際上,目前這僅是沒有任何路徑的檔案名稱。