CSharpUtilities

版本 3.8 新增。

使 CSharp/.NET 目標配置更輕鬆的功能。

CMake 實用工具函式集合,適用於處理 2010 年及更高版本 Visual Studio 產生器的 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「基本」名稱的變數名稱。

KEY

將計算其基本名稱的金鑰。預期為大寫完整檔案名稱。

csharp_get_dependentupon_name

計算可用作原始碼檔案屬性 VS_CSHARP_<tagname> 的值的字串,其中 targetDependentUpon

csharp_get_dependentupon_name(NAME FILE)
NAME

具有結果值的變數名稱

FILE

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

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