@@ -4,46 +4,7 @@ find_package(Qt6 CONFIG REQUIRED COMPONENTS Network Qml Quick QuickWidgets Widge
44find_package (spdlog CONFIG REQUIRED )
55find_package (Boost REQUIRED CONFIG COMPONENTS thread )
66
7- file (GLOB_RECURSE uibase_headers RELATIVE ${CMAKE_CURRENT_LIST_DIR} "${CMAKE_CURRENT_LIST_DIR} /../include/**/*.h" )
8-
9- add_library (uibase SHARED )
10- mo2_configure_target (uibase WARNINGS ON EXTERNAL_WARNINGS ON )
11- target_sources (uibase
12- PUBLIC
13- FILE_SET HEADERS
14- BASE_DIRS ${CMAKE_CURRENT_LIST_DIR} /../include
15- FILES ${uibase_headers}
16- )
17-
18- set_target_properties (uibase PROPERTIES DEBUG_POSTFIX d )
19-
20- # TODO: remove this after fixing UIBase #include<> directives
21- target_include_directories (uibase PRIVATE
22- $<BUILD_INTERFACE :${PROJECT_SOURCE_DIR} /include /uibase >
23- $<BUILD_INTERFACE :${PROJECT_SOURCE_DIR} /include /uibase /game_features >
24- )
25-
26- add_library (mo2::uibase ALIAS uibase )
27-
28- target_compile_definitions (uibase PRIVATE -DUIBASE_EXPORT SPDLOG_USE_STD_FORMAT )
29-
30- target_link_libraries (uibase
31- PUBLIC Qt6::Widgets Qt6::Network Qt6::QuickWidgets
32- PRIVATE
33- Boost::headers Boost::thread spdlog::spdlog_header_only
34- Qt6::Qml Qt6::Quick Version )
35-
36- # installation
37- install (TARGETS uibase EXPORT uibaseTargets FILE_SET HEADERS)
38- install (FILES $<TARGET_PDB_FILE :uibase > DESTINATION pdb)
39- install (EXPORT uibaseTargets
40- FILE mo2-uibase-targets .cmake
41- NAMESPACE mo2::
42- DESTINATION lib/cmake/mo2-uibase
43- )
44-
45- # filters
46- source_group (src FILES
7+ set (root_headers
478 ../include/uibase/delayedfilewriter.h
489 ../include/uibase/diagnosisreport.h
4910 ../include/uibase/dllimport.h
@@ -71,15 +32,13 @@ source_group(src FILES
7132 ../include/uibase/utility.h
7233 ../include/uibase/versioninfo.h
7334)
74-
75- source_group (src/interfaces FILES
35+ set (interface_headers
7636 ../include/uibase/ifiletree.h
7737 ../include/uibase/iinstallationmanager.h
7838 ../include/uibase/imodinterface.h
7939 ../include/uibase/imodlist.h
8040 ../include/uibase/imodrepositorybridge.h
8141 ../include/uibase/imoinfo.h
82- ../include/uibase/installationtester.h
8342 ../include/uibase/iplugin.h
8443 ../include/uibase/iplugindiagnose.h
8544 ../include/uibase/ipluginfilemapper.h
@@ -96,23 +55,13 @@ source_group(src/interfaces FILES
9655 ../include/uibase/iprofile.h
9756 ../include/uibase/isavegame.h
9857 ../include/uibase/isavegameinfowidget.h
99-
100- ifiletree.cpp
101- imodrepositorybridge.cpp
102- imoinfo.cpp
103- iplugininstaller.cpp
10458)
105-
106- source_group (src/tutorials FILES
59+ set (tutorial_headers
10760 ../include/uibase/tutorabledialog.h
10861 ../include/uibase/tutorialcontrol.h
10962 ../include/uibase/tutorialmanager.h
110- tutorabledialog.cpp
111- tutorialcontrol.cpp
112- tutorialmanager.cpp
11363)
114-
115- source_group (src/widgets FILES
64+ set (widget_headers
11665 ../include/uibase/expanderwidget.h
11766 ../include/uibase/filterwidget.h
11867 ../include/uibase/finddialog.h
@@ -123,7 +72,82 @@ source_group(src/widgets FILES
12372 ../include/uibase/taskprogressmanager.h
12473 ../include/uibase/textviewer.h
12574 ../include/uibase/widgetutility.h
75+ )
76+ set (game_features_header
77+ ../include/uibase/game_features/bsainvalidation.h
78+ ../include/uibase/game_features/dataarchives.h
79+ ../include/uibase/game_features/game_feature.h
80+ ../include/uibase/game_features/gameplugins.h
81+ ../include/uibase/game_features/igamefeatures.h
82+ ../include/uibase/game_features/localsavegames.h
83+ ../include/uibase/game_features/moddatachecker.h
84+ ../include/uibase/game_features/moddatacontent.h
85+ ../include/uibase/game_features/savegameinfo.h
86+ ../include/uibase/game_features/scriptextender.h
87+ ../include/uibase/game_features/unmanagedmods.h
88+ )
89+ set (formatters_header
90+ ../include/uibase/formatters/enums.h
91+ ../include/uibase/formatters/qt.h
92+ ../include/uibase/formatters/random_access_containers.h
93+ ../include/uibase/formatters/strings.h
94+ ../include/uibase/formatters.h
95+ )
96+
97+ add_library (uibase SHARED )
98+ mo2_configure_target (uibase NO_SOURCES WARNINGS ON EXTERNAL_WARNINGS ON )
99+ mo2_default_source_group ()
100+
101+ mo2_target_sources (uibase
102+ FOLDER src
103+ PRIVATE
104+ ${root_headers}
105+ delayedfilewriter.cpp
106+ diagnosisreport.cpp
107+ errorcodes.cpp
108+ eventfilter.cpp
109+ executableinfo.cpp
110+ filesystemutilities.cpp
111+ guessedvalue.cpp
112+ json.cpp
113+ log .cpp
114+ modrepositoryfileinfo.cpp
115+ nxmurl.cpp
116+ pch.cpp
117+ pluginrequirements.cpp
118+ pluginsetting.cpp
119+ registry.cpp
120+ report.cpp
121+ safewritefile.cpp
122+ scopeguard.cpp
123+ steamutility.cpp
124+ utility.cpp
125+ versioninfo.cpp
126+ )
127+
128+ mo2_target_sources (uibase
129+ FOLDER src/interfaces
130+ PRIVATE
131+ ${interface_headers}
132+ ifiletree.cpp
133+ imodrepositorybridge.cpp
134+ imoinfo.cpp
135+ iplugininstaller.cpp
136+ )
137+
138+ mo2_target_sources (uibase
139+ FOLDER src/tutorials
140+ PRIVATE
141+ ${tutorial_headers}
142+ tutorabledialog.cpp
143+ tutorialcontrol.cpp
144+ tutorialmanager.cpp
145+ )
126146
147+ mo2_target_sources (uibase
148+ FOLDER src/widgets
149+ PRIVATE
150+ ${widget_headers}
127151 expanderwidget.cpp
128152 finddialog.cpp
129153 lineeditclear.cpp
@@ -133,13 +157,59 @@ source_group(src/widgets FILES
133157 taskprogressmanager.cpp
134158 textviewer.cpp
135159 widgetutility.cpp
136- filterwidget.cpp
160+ filterwidget.cpp
161+ )
162+
163+ mo2_target_sources (uibase FOLDER src/formatters PRIVATE ${formatters_header} )
164+ mo2_target_sources (uibase FOLDER src/game_features PRIVATE ${game_features_header} )
165+
166+ target_sources (uibase
167+ PRIVATE
168+ finddialog.ui
169+ questionboxmemory.ui
170+ taskdialog.ui
171+ textviewer.ui
172+
173+ version .rc
174+
175+ ${root_headers}
176+ pch.h
177+
178+ PUBLIC
179+ FILE_SET HEADERS
180+ BASE_DIRS ${CMAKE_CURRENT_LIST_DIR} /../include
181+ FILES
182+ ${root_headers}
183+ ${interface_headers}
184+ ${tutorial_headers}
185+ ${widget_headers}
186+ ${game_features_header}
187+ ${formatters_header}
137188)
138189
139- get_target_property (game_features uibase HEADER_SET_HEADERS )
140- list (FILTER game_features INCLUDE REGEX ".*game_features.*" )
141- source_group (src/game_features FILES ${game_features} )
190+ set_target_properties (uibase PROPERTIES DEBUG_POSTFIX d )
191+
192+ # TODO: remove this after fixing UIBase #include<> directives
193+ target_include_directories (uibase PRIVATE
194+ $<BUILD_INTERFACE :${PROJECT_SOURCE_DIR} /include /uibase >
195+ $<BUILD_INTERFACE :${PROJECT_SOURCE_DIR} /include /uibase /game_features >
196+ )
197+
198+ add_library (mo2::uibase ALIAS uibase )
199+
200+ target_compile_definitions (uibase PRIVATE -DUIBASE_EXPORT SPDLOG_USE_STD_FORMAT )
201+
202+ target_link_libraries (uibase
203+ PUBLIC Qt6::Widgets Qt6::Network Qt6::QuickWidgets
204+ PRIVATE
205+ Boost::headers Boost::thread spdlog::spdlog_header_only
206+ Qt6::Qml Qt6::Quick Version )
142207
143- get_target_property (formatters uibase HEADER_SET_HEADERS )
144- list (FILTER formatters INCLUDE REGEX ".*formatters.*" )
145- source_group (src/formatters FILES ${formatters} )
208+ # installation
209+ install (TARGETS uibase EXPORT uibaseTargets FILE_SET HEADERS)
210+ install (FILES $<TARGET_PDB_FILE :uibase > DESTINATION pdb)
211+ install (EXPORT uibaseTargets
212+ FILE mo2-uibase-targets .cmake
213+ NAMESPACE mo2::
214+ DESTINATION lib/cmake/mo2-uibase
215+ )
0 commit comments