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>
值的檔案名稱
實際上,目前這僅是沒有任何路徑的檔案名稱。