blob: 698ad03d5640a0c3888fa8529568f92dbad63ac5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
|
cmake_minimum_required(VERSION 3.16)
find_package(mo2-cmake CONFIG REQUIRED)
find_package(usvfs CONFIG REQUIRED)
find_package(mo2-uibase CONFIG REQUIRED)
find_package(mo2-archive CONFIG REQUIRED)
find_package(mo2-lootcli-header CONFIG REQUIRED)
find_package(mo2-bsatk CONFIG REQUIRED)
find_package(mo2-esptk CONFIG REQUIRED)
find_package(mo2-dds-header CONFIG REQUIRED)
find_package(mo2-libbsarch CONFIG REQUIRED)
find_package(Qt6 REQUIRED COMPONENTS WebEngineWidgets WebSockets NetworkAuth)
find_package(Boost CONFIG REQUIRED COMPONENTS program_options thread interprocess signals2 uuid accumulators)
find_package(7zip CONFIG REQUIRED)
find_package(lz4 CONFIG REQUIRED)
find_package(ZLIB REQUIRED)
add_executable(organizer)
set_target_properties(organizer PROPERTIES
OUTPUT_NAME "ModOrganizer"
WIN32_EXECUTABLE TRUE)
# disable translations because we want to be able to install somewhere else if
# required
mo2_configure_target(organizer WARNINGS 4 TRANSLATIONS OFF)
# we add translations "manually" to handle MO2_INSTALL_IS_BIN
mo2_add_translations(organizer
INSTALL_RELEASE
INSTALL_DIRECTORY "${_bin}/translations"
SOURCES ${CMAKE_CURRENT_SOURCE_DIR})
mo2_set_project_to_run_from_install(
organizer EXECUTABLE ${CMAKE_INSTALL_PREFIX}/${_bin}/ModOrganizer.exe)
target_link_libraries(organizer PRIVATE
Shlwapi Bcrypt
usvfs::usvfs mo2::uibase mo2::archive mo2::libbsarch
mo2::bsatk mo2::esptk mo2::lootcli-header
Boost::program_options Boost::signals2 Boost::uuid Boost::accumulators
Qt6::WebEngineWidgets Qt6::WebSockets Qt6::NetworkAuth Version Dbghelp)
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/dlls.manifest.qt6"
DESTINATION ${_bin}/dlls
CONFIGURATIONS Release RelWithDebInfo
RENAME dlls.manifest)
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/dlls.manifest.debug.qt6"
DESTINATION ${_bin}/dlls
CONFIGURATIONS Debug
RENAME dlls.manifest)
if (NOT MO2_SKIP_STYLESHEETS_INSTALL)
install(
DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/stylesheets"
DESTINATION ${_bin})
endif()
if (NOT MO2_SKIP_TUTORIALS_INSTALL)
install(
DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/tutorials"
DESTINATION ${_bin})
endif()
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/resources/markdown.html"
DESTINATION ${_bin}/resources)
# install ModOrganizer.exe itself
install(FILES $<TARGET_FILE:organizer> DESTINATION ${_bin})
# install dependencies DLLs
install(FILES $<TARGET_FILE:mo2::libbsarch> DESTINATION ${_bin}/dlls)
install(FILES $<TARGET_FILE:7zip::7zip> DESTINATION ${_bin}/dlls)
# this may copy over the ones from uibase/usvfs
# - when building with mob, this should not matter as the files should be identical
# - when building standalone, this should help having matching USVFS DLL between the
# build and the installation
# - this may cause issue with uibase in standalone mode if the installed version does
# not match the one used for the build, but there would be other issue anyway (e.g.
# different uibase.dll between modorganizer and plugins)
#
install(FILES
$<TARGET_FILE:mo2::uibase>
$<TARGET_FILE:usvfs_x64::usvfs_dll>
$<TARGET_FILE:usvfs_x86::usvfs_dll>
$<TARGET_FILE:usvfs_x64::usvfs_proxy>
$<TARGET_FILE:usvfs_x86::usvfs_proxy>
DESTINATION ${_bin})
# do not install PDB if CMAKE_INSTALL_PREFIX is "bin"
if (NOT MO2_INSTALL_IS_BIN)
install(FILES $<TARGET_PDB_FILE:organizer> DESTINATION pdb)
endif()
mo2_deploy_qt(
DIRECTORY ${_bin}
BINARIES ModOrganizer.exe $<TARGET_FILE_NAME:mo2::uibase>)
# set source groups for VS
mo2_add_filter(NAME src/application GROUPS
iuserinterface
commandline
main
moapplication
moshortcut
multiprocess
sanitychecks
selfupdater
systemtraymanager
updatedialog
)
mo2_add_filter(NAME src/browser GROUPS
browserdialog
browserview
)
mo2_add_filter(NAME src/categories GROUPS
categories
categoriestable
categoriesdialog
categoryimportdialog
)
mo2_add_filter(NAME src/core GROUPS
archivefiletree
githubpp
installationmanager
nexusinterface
nexusoauthlogin
nexusoauthtokens
nexusoauthconfig
nxmaccessmanager
organizercore
game_features
plugincontainer
apiuseraccount
processrunner
qdirfiletree
virtualfiletree
uilocker
)
mo2_add_filter(NAME src/dialogs GROUPS
aboutdialog
activatemodsdialog
credentialsdialog
filedialogmemory
forcedloaddialog
forcedloaddialogwidget
listdialog
messagedialog
motddialog
overwriteinfodialog
queryoverwritedialog
problemsdialog
savetextasdialog
selectiondialog
syncoverwritedialog
transfersavesdialog
waitingonclosedialog
)
mo2_add_filter(NAME src/downloads GROUPS
downloadlist
downloadlistview
downloadmanager
)
mo2_add_filter(NAME src/env GROUPS
env
envdump
envfs
envmetrics
envmodule
envsecurity
envshell
envshortcut
envwindows
)
mo2_add_filter(NAME src/executables GROUPS
executableslist
editexecutablesdialog
)
mo2_add_filter(NAME src/instances GROUPS
createinstancedialog
createinstancedialogpages
instancemanager
instancemanagerdialog
)
mo2_add_filter(NAME src/loot GROUPS
loot
lootdialog
)
mo2_add_filter(NAME src/mainwindow GROUPS
datatab
downloadstab
iconfetcher
filetree
filetreeitem
filetreemodel
mainwindow
savestab
statusbar
)
mo2_add_filter(NAME src/modinfo GROUPS
modinfo
modinfobackup
modinfoforeign
modinfooverwrite
modinforegular
modinfoseparator
modinfowithconflictinfo
)
mo2_add_filter(NAME src/modinfo/dialog GROUPS
modinfodialog
modinfodialogcategories
modinfodialogconflicts
modinfodialogconflictsmodels
modinfodialogesps
modinfodialogfiletree
modinfodialogfwd
modinfodialogimages
modinfodialognexus
modinfodialogtab
modinfodialogtextfiles
)
mo2_add_filter(NAME src/modinfo/dialog/widgets GROUPS
modidlineedit
)
mo2_add_filter(NAME src/modlist GROUPS
modlist
modlistdropinfo
modlistsortproxy
modlistbypriorityproxy
)
mo2_add_filter(NAME src/modlist/view GROUPS
filterlist
modlistview
modlistviewactions
modlistcontextmenu
modflagicondelegate
modcontenticondelegate
modconflicticondelegate
modlistversiondelegate
)
mo2_add_filter(NAME src/plugins GROUPS
pluginlist
pluginlistsortproxy
pluginlistview
pluginlistcontextmenu
)
mo2_add_filter(NAME src/previews GROUPS
previewdialog
previewgenerator
)
mo2_add_filter(NAME src/profiles GROUPS
profile
profileinputdialog
profilesdialog
)
mo2_add_filter(NAME src/proxies GROUPS
downloadmanagerproxy
executableslistproxy
gamefeaturesproxy
instancemanagerproxy
modlistproxy
organizerproxy
pluginlistproxy
proxyutils
)
mo2_add_filter(NAME src/register GROUPS
shared/directoryentry
shared/fileentry
shared/filesorigin
shared/fileregister
shared/fileregisterfwd
shared/originconnection
directoryrefresher
)
mo2_add_filter(NAME src/settings GROUPS
settings
settingsutilities
)
mo2_add_filter(NAME src/settingsdialog GROUPS
settingsdialog
settingsdialogdiagnostics
settingsdialoggeneral
settingsdialognexus
settingsdialogpaths
settingsdialogplugins
settingsdialogworkarounds
settingsdialogmodlist
settingsdialogtheme
disableproxyplugindialog
)
mo2_add_filter(NAME src/utilities GROUPS
shared/appconfig
bbcode
csvbuilder
persistentcookiejar
serverinfo
spawn
shared/util
usvfsconnector
shared/windows_error
thread_utils
json
glob_matching
)
mo2_add_filter(NAME src/widgets GROUPS
colortable
genericicondelegate
filerenamer
icondelegate
lcdnumber
loglist
loghighlighter
noeditdelegate
qtgroupingproxy
texteditor
viewmarkingscrollbar
modelutils
copyeventfilter
)
|