CSharpUtilities¶
Added in version 3.8.
Functions to make configuration of CSharp/.NET targets easier.
A collection of CMake utility functions useful for dealing with CSharp targets for Visual Studio generators from version 2010 and later.
The following functions are provided by this module:
Main functions
Helper functions
Main functions provided by the module¶
- csharp_set_windows_forms_properties¶
Sets source file properties for use of Windows Forms. Use this, if your CSharp target uses Windows Forms:
csharp_set_windows_forms_properties([<file1> [<file2> [...]]])
<fileN>List of all source files which are relevant for setting the
VS_CSHARP_<tagname>properties (including.cs,.resxand.Designer.csextensions).
In the list of all given files for all files ending with
.Designer.csand.resxis searched. For every designer or resource file a file with the same base name but only.csas extension is searched. If this is found, theVS_CSHARP_<tagname>properties are set as follows:- for the .cs file:
VS_CSHARP_SubType "Form"
- for the .Designer.cs file (if it exists):
VS_CSHARP_DependentUpon <cs-filename>
VS_CSHARP_DesignTime "" (delete tag if previously defined)
VS_CSHARP_AutoGen ""(delete tag if previously defined)
- for the .resx file (if it exists):
VS_RESOURCE_GENERATOR "" (delete tag if previously defined)
VS_CSHARP_DependentUpon <cs-filename>
VS_CSHARP_SubType "Designer"
- csharp_set_designer_cs_properties¶
Sets source file properties of
.Designer.csfiles depending on sibling filenames. Use this, if your CSharp target does not use Windows Forms (for Windows Forms usecsharp_set_windows_forms_properties()instead):csharp_set_designer_cs_properties([<file1> [<file2> [...]]])
<fileN>List of all source files which are relevant for setting the
VS_CSHARP_<tagname>properties (including.cs,.resx,.settingsand.Designer.csextensions).
In the list of all given files for all files ending with
.Designer.csis searched. For every designer file all files with the same base name but different extensions are searched. If a match is found, the source file properties of the designer file are set depending on the extension of the matched file:- if match is .resx file:
VS_CSHARP_AutoGen "True"
VS_CSHARP_DesignTime "True"
VS_CSHARP_DependentUpon <resx-filename>
- if match is .cs file:
VS_CSHARP_DependentUpon <cs-filename>
- if match is .settings file:
VS_CSHARP_AutoGen "True"
VS_CSHARP_DesignTimeSharedInput "True"
VS_CSHARP_DependentUpon <settings-filename>
Note
Because the source file properties of the .Designer.cs file are set according
to the found matches and every match sets the VS_CSHARP_DependentUpon
property, there should only be one match for each Designer.cs file.
- csharp_set_xaml_cs_properties¶
Sets source file properties for use of Windows Presentation Foundation (WPF) and XAML. Use this, if your CSharp target uses WPF/XAML:
csharp_set_xaml_cs_properties([<file1> [<file2> [...]]])
<fileN>List of all source files which are relevant for setting the
VS_CSHARP_<tagname>properties (including.cs,.xaml, and.xaml.csextensions).
In the list of all given files for all files ending with
.xaml.csis searched. For every xaml-cs file, a file with the same base name but extension.xamlis searched. If a match is found, the source file properties of the.xaml.csfile are set:VS_CSHARP_DependentUpon <xaml-filename>
Helper functions which are used by the above ones¶
- csharp_get_filename_keys¶
Helper function which computes a list of key values to identify source files independently of relative/absolute paths given in cmake and eliminates case sensitivity:
csharp_get_filename_keys(OUT [<file1> [<file2> [...]]])
OUTName of the variable in which the list of keys is stored
<fileN>filename(s) as given to CSharp target using
add_library()oradd_executable()
In some way the function applies a canonicalization to the source names. This is necessary to find file matches if the files have been added to the target with different directory prefixes:
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¶
Returns the full filepath and name without extension of a key. KEY is expected to be a key from csharp_get_filename_keys. In BASE the value of KEY without the file extension is returned:
csharp_get_filename_key_base(BASE KEY)
BASEName of the variable with the computed "base" of
KEY.KEYThe key of which the base will be computed. Expected to be a upper case full filename.
- csharp_get_dependentupon_name¶
Computes a string which can be used as value for the source file property
VS_CSHARP_<tagname>with target beingDependentUpon:csharp_get_dependentupon_name(NAME FILE)
NAMEName of the variable with the result value
FILEFilename to convert to
<DependentUpon>value
Actually this is only the filename without any path given at the moment.