master
txt 250 lines 9.7 KB
Raw
1 set(TargetApp wslsettings)
2
3 enable_language(CSharp)
4
5 # needed for csharp_set_xaml_cs_properties
6 include(CSharpUtilities)
7
8 # place wsl settings binaries/assets into
9 # separate directory to simplify packaging
10 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${TargetApp}")
11 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG}/${TargetApp})
12 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE}/${TargetApp})
13
14 file(MAKE_DIRECTORY ${BIN}/${TargetApp}/Assets)
15
16 # Symlink the icon in the output directory to make local development easier
17 file(CREATE_LINK ${CMAKE_SOURCE_DIR}/images/wsl.ico ${BIN}/${TargetApp}/Assets/wsl.ico)
18 file(CREATE_LINK ${CMAKE_SOURCE_DIR}/images/wslbw.ico ${BIN}/${TargetApp}/Assets/wslbw.ico)
19 file(CREATE_LINK ${CMAKE_SOURCE_DIR}/images/SettingsOOBEDockerIcon.png ${BIN}/${TargetApp}/Assets/SettingsOOBEDockerIcon.png)
20 file(CREATE_LINK ${CMAKE_SOURCE_DIR}/images/SettingsOOBEFileExplorerIcon.png ${BIN}/${TargetApp}/Assets/SettingsOOBEFileExplorerIcon.png)
21 file(CREATE_LINK ${CMAKE_SOURCE_DIR}/images/SettingsOOBEVSCodeIcon.png ${BIN}/${TargetApp}/Assets/SettingsOOBEVSCodeIcon.png)
22 file(CREATE_LINK ${CMAKE_SOURCE_DIR}/images/SettingsOOBEVSIcon.png ${BIN}/${TargetApp}/Assets/SettingsOOBEVSIcon.png)
23
24 file(CREATE_LINK ${CMAKE_SOURCE_DIR}/images/SettingsOOBECrossOSFileAccess.gif ${BIN}/${TargetApp}/Assets/SettingsOOBECrossOSFileAccess.gif)
25 file(CREATE_LINK ${CMAKE_SOURCE_DIR}/images/SettingsOOBEDistroManagement.png ${BIN}/${TargetApp}/Assets/SettingsOOBEDistroManagement.png)
26 file(CREATE_LINK ${CMAKE_SOURCE_DIR}/images/SettingsOOBEDockerDesktopIntegration.png ${BIN}/${TargetApp}/Assets/SettingsOOBEDockerDesktopIntegration.png)
27 file(CREATE_LINK ${CMAKE_SOURCE_DIR}/images/SettingsOOBEGeneral.png ${BIN}/${TargetApp}/Assets/SettingsOOBEGeneral.png)
28 file(CREATE_LINK ${CMAKE_SOURCE_DIR}/images/SettingsOOBEGPUAcceleration.gif ${BIN}/${TargetApp}/Assets/SettingsOOBEGPUAcceleration.gif)
29 file(CREATE_LINK ${CMAKE_SOURCE_DIR}/images/SettingsOOBEGUIApps.png ${BIN}/${TargetApp}/Assets/SettingsOOBEGUIApps.png)
30 file(CREATE_LINK ${CMAKE_SOURCE_DIR}/images/SettingsOOBENetworkingIntegration.png ${BIN}/${TargetApp}/Assets/SettingsOOBENetworkingIntegration.png)
31 file(CREATE_LINK ${CMAKE_SOURCE_DIR}/images/SettingsOOBEVSCodeIntegration.png ${BIN}/${TargetApp}/Assets/SettingsOOBEVSCodeIntegration.png)
32 file(CREATE_LINK ${CMAKE_SOURCE_DIR}/images/SettingsOOBEVSIntegration.png ${BIN}/${TargetApp}/Assets/SettingsOOBEVSIntegration.png)
33
34 file(GLOB STRINGS ${CMAKE_SOURCE_DIR}/localization/strings/**/*.resw)
35
36 add_executable(
37 ${TargetApp} WIN32
38 app.manifest
39 App.xaml
40 App.xaml.cs
41 Constants.cs
42 LibWsl.cs
43 Usings.cs
44 Activation/ActivationHandler.cs
45 Activation/DefaultActivationHandler.cs
46 Activation/IActivationHandler.cs
47 Activation/ProtocolActivationHandler.cs
48 Behaviors/NavigationViewHeaderBehavior.cs
49 Behaviors/NavigationViewHeaderMode.cs
50 Contracts/Services/IActivationService.cs
51 Contracts/Services/INavigationService.cs
52 Contracts/Services/INavigationViewService.cs
53 Contracts/Services/IPageService.cs
54 Contracts/Services/IWindowService.cs
55 Contracts/Services/IWslConfigService.cs
56 Contracts/ViewModels/INavigationAware.cs
57 Controls/HyperlinkTextBlock.xaml
58 Controls/HyperlinkTextBlock.xaml.cs
59 Controls/OOBEContent.xaml
60 Controls/OOBEContent.xaml.cs
61 Converters/BooleanToVisibilityConverter.cs
62 Converters/MegabyteNumberConverter.cs
63 Converters/MegabyteStringConverter.cs
64 Converters/MillisecondsStringConverter.cs
65 Helpers/FrameExtensions.cs
66 Helpers/NavigationHelper.cs
67 Helpers/ResourceExtensions.cs
68 Helpers/RuntimeHelper.cs
69 Helpers/TitleBarHelper.cs
70 Properties/AssemblyInfo.cs
71 Services/ActivationService.cs
72 Services/NavigationService.cs
73 Services/NavigationViewService.cs
74 Services/PageService.cs
75 Services/WindowService.cs
76 Services/WslConfigService.cs
77 Styles/Button.xaml
78 Styles/FontSizes.xaml
79 Styles/CommonStyles.xaml
80 Styles/Thickness.xaml
81 ViewModels/OOBE/DistroManagementViewModel.cs
82 ViewModels/OOBE/DockerDesktopIntegrationViewModel.cs
83 ViewModels/OOBE/GeneralViewModel.cs
84 ViewModels/OOBE/GPUAccelerationViewModel.cs
85 ViewModels/OOBE/GUIAppsViewModel.cs
86 ViewModels/OOBE/NetworkingIntegrationViewModel.cs
87 ViewModels/OOBE/VSCodeIntegrationViewModel.cs
88 ViewModels/OOBE/VSIntegrationViewModel.cs
89 ViewModels/OOBE/WorkingAcrossFileSystemsViewModel.cs
90 ViewModels/Settings/AboutViewModel.cs
91 ViewModels/Settings/DeveloperViewModel.cs
92 ViewModels/Settings/FileSystemViewModel.cs
93 ViewModels/Settings/MemAndProcViewModel.cs
94 ViewModels/Settings/NetworkingViewModel.cs
95 ViewModels/Settings/OptionalFeaturesViewModel.cs
96 ViewModels/Settings/WslConfigSettingViewModel.cs
97 ViewModels/ShellViewModel.cs
98 Views/OOBE/DistroManagementPage.xaml
99 Views/OOBE/DistroManagementPage.xaml.cs
100 Views/OOBE/DockerDesktopIntegrationPage.xaml
101 Views/OOBE/DockerDesktopIntegrationPage.xaml.cs
102 Views/OOBE/GeneralPage.xaml
103 Views/OOBE/GeneralPage.xaml.cs
104 Views/OOBE/GPUAccelerationPage.xaml
105 Views/OOBE/GPUAccelerationPage.xaml.cs
106 Views/OOBE/GUIAppsPage.xaml
107 Views/OOBE/GUIAppsPage.xaml.cs
108 Views/OOBE/NetworkingIntegrationPage.xaml
109 Views/OOBE/NetworkingIntegrationPage.xaml.cs
110 Views/OOBE/ShellPage.xaml
111 Views/OOBE/ShellPage.xaml.cs
112 Views/OOBE/VSCodeIntegrationPage.xaml
113 Views/OOBE/VSCodeIntegrationPage.xaml.cs
114 Views/OOBE/VSIntegrationPage.xaml
115 Views/OOBE/VSIntegrationPage.xaml.cs
116 Views/OOBE/WorkingAcrossFileSystemsPage.xaml
117 Views/OOBE/WorkingAcrossFileSystemsPage.xaml.cs
118 Views/Settings/AboutPage.xaml
119 Views/Settings/AboutPage.xaml.cs
120 Views/Settings/DeveloperPage.xaml
121 Views/Settings/DeveloperPage.xaml.cs
122 Views/Settings/FileSystemPage.xaml
123 Views/Settings/FileSystemPage.xaml.cs
124 Views/Settings/MemAndProcPage.xaml
125 Views/Settings/MemAndProcPage.xaml.cs
126 Views/Settings/NetworkingPage.xaml
127 Views/Settings/NetworkingPage.xaml.cs
128 Views/Settings/OptionalFeaturesPage.xaml
129 Views/Settings/OptionalFeaturesPage.xaml.cs
130 Views/Settings/SettingsApplyHelper.cs
131 Views/Settings/ShellPage.xaml
132 Views/Settings/ShellPage.xaml.cs
133 Windows/OOBEWindow.xaml
134 Windows/OOBEWindow.xaml.cs
135 Windows/MainWindow.xaml
136 Windows/MainWindow.xaml.cs
137 ${STRINGS}
138 )
139
140 csharp_set_xaml_cs_properties(
141 Controls/HyperlinkTextBlock.xaml
142 Controls/HyperlinkTextBlock.xaml.cs
143 Styles/Button.xaml
144 Styles/FontSizes.xaml
145 Styles/CommonStyles.xaml
146 Styles/Thickness.xaml
147 Windows/OOBEWindow.xaml
148 Windows/OOBEWindow.xaml.cs
149 Windows/MainWindow.xaml
150 Windows/MainWindow.xaml.cs
151 Views/OOBE/DistroManagementPage.xaml
152 Views/OOBE/DistroManagementPage.xaml.cs
153 Views/OOBE/DockerDesktopIntegrationPage.xaml
154 Views/OOBE/DockerDesktopIntegrationPage.xaml.cs
155 Views/OOBE/GeneralPage.xaml
156 Views/OOBE/GeneralPage.xaml.cs
157 Views/OOBE/GPUAccelerationPage.xaml
158 Views/OOBE/GPUAccelerationPage.xaml.cs
159 Views/OOBE/GUIAppsPage.xaml
160 Views/OOBE/GUIAppsPage.xaml.cs
161 Views/OOBE/NetworkingIntegrationPage.xaml
162 Views/OOBE/NetworkingIntegrationPage.xaml.cs
163 Views/OOBE/ShellPage.xaml
164 Views/OOBE/ShellPage.xaml.cs
165 Views/OOBE/VSCodeIntegrationPage.xaml
166 Views/OOBE/VSCodeIntegrationPage.xaml.cs
167 Views/OOBE/VSIntegrationPage.xaml
168 Views/OOBE/VSIntegrationPage.xaml.cs
169 Views/OOBE/WorkingAcrossFileSystemsPage.xaml
170 Views/OOBE/WorkingAcrossFileSystemsPage.xaml.cs
171 Views/Settings/AboutPage.xaml
172 Views/Settings/AboutPage.xaml.cs
173 Views/Settings/DeveloperPage.xaml
174 Views/Settings/DeveloperPage.xaml.cs
175 Views/Settings/FileSystemPage.xaml
176 Views/Settings/FileSystemPage.xaml.cs
177 Views/Settings/MemAndProcPage.xaml
178 Views/Settings/MemAndProcPage.xaml.cs
179 Views/Settings/NetworkingPage.xaml
180 Views/Settings/NetworkingPage.xaml.cs
181 Views/Settings/OptionalFeaturesPage.xaml
182 Views/Settings/OptionalFeaturesPage.xaml.cs
183 Views/Settings/ShellPage.xaml
184 Views/Settings/ShellPage.xaml.cs
185 )
186
187 configure_csharp_target(${TargetApp})
188
189 set_property(
190 SOURCE App.xaml
191 PROPERTY VS_XAML_TYPE
192 "ApplicationDefinition"
193 )
194
195 target_compile_options(
196 ${TargetApp}
197 PRIVATE "/unsafe"
198 )
199
200 if (${OFFICIAL_BUILD})
201 add_compile_definitions(WSL_OFFICIAL_BUILD TELEMETRYEVENTSOURCE_PUBLIC)
202 endif()
203
204 # Package References and versions per WinUI Template Studio Sample app
205 set_property(
206 TARGET ${TargetApp}
207 PROPERTY VS_PACKAGE_REFERENCES
208 "CommunityToolkit.Mvvm_${CTK_MVVM_VERSION};\
209 CommunityToolkit.WinUI.Animations_${CTK_ANIMATIONS_VERSION};\
210 CommunityToolkit.WinUI.Controls.SettingsControls_${CTK_STTNGS_CTRLS_VERSION};\
211 Microsoft.Extensions.Hosting_${EXTS_HOSTING_VERSION};\
212 Microsoft.WindowsAppSDK_${WIN_APP_SDK_VERSION};\
213 Microsoft.Xaml.Behaviors.WinUI.Managed_${XAML_BEHAVIORS_VERSION};\
214 WinUIEx_${WINUIEX_VERSION}"
215 )
216
217 set_target_properties(
218 ${TargetApp} PROPERTIES
219 # ----- Dotnet, Windows App SDK and WinUI stuff starts here -----
220 VS_GLOBAL_RootNamespace wslsettings
221 VS_GLOBAL_AppContainerApplication false
222 VS_GLOBAL_AppxPackage false
223 VS_GLOBAL_UseWinUI true
224 VS_GLOBAL_WindowsPackageType None
225 VS_GLOBAL_SelfContained true
226 VS_GLOBAL_WindowsAppSDKSelfContained true
227 VS_GLOBAL_ApplicationIcon "${CMAKE_SOURCE_DIR}/images/wsl.ico"
228 VS_GLOBAL_ApplicationManifest "${CMAKE_CURRENT_SOURCE_DIR}/app.manifest"
229 VS_GLOBAL_RuntimeIdentifier "win-${TARGET_PLATFORM}"
230 VS_GLOBAL_RuntimeIdentifiers "win-${TARGET_PLATFORM}"
231 VS_GLOBAL_Platform "${TARGET_PLATFORM}"
232 VS_GLOBAL_Platforms "${TARGET_PLATFORM}"
233 VS_GLOBAL_PlatformTarget "${TARGET_PLATFORM}"
234 VS_GLOBAL_ImplicitUsings enable
235 VS_GLOBAL_Nullable enable
236 VS_GLOBAL_GenerateAssemblyInfo false
237 )
238
239 configure_file(
240 "${CMAKE_CURRENT_LIST_DIR}/directory.build.targets.in"
241 "${CMAKE_CURRENT_LIST_DIR}/directory.build.targets"
242 )
243
244 configure_file(
245 "${CMAKE_CURRENT_LIST_DIR}/Properties/AssemblyInfo.cs.in"
246 "${CMAKE_CURRENT_LIST_DIR}/Properties/AssemblyInfo.cs"
247 )
248
249 add_dependencies(wslsettings libwsl)
250 set_target_properties(wslsettings PROPERTIES FOLDER windows)