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>
的值的字串,其中 target 為DependentUpon
csharp_get_dependentupon_name(NAME FILE)
NAME
具有結果值的變數名稱
FILE
要轉換為
<DependentUpon>
值的檔案名稱
實際上,目前這只是沒有給定任何路徑的檔案名稱。