Skip to content

Commit f3e4dd3

Browse files
committed
Refactor CMake stuff after mo2-cmake updates for sources management.
1 parent e94503c commit f3e4dd3

3 files changed

Lines changed: 139 additions & 64 deletions

File tree

src/CMakeLists.txt

Lines changed: 132 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -4,46 +4,7 @@ find_package(Qt6 CONFIG REQUIRED COMPONENTS Network Qml Quick QuickWidgets Widge
44
find_package(spdlog CONFIG REQUIRED)
55
find_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+
)

tests/CMakeLists.txt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
cmake_minimum_required(VERSION 3.16)
22

33
add_executable(uibase-tests EXCLUDE_FROM_ALL)
4-
mo2_configure_tests(uibase-tests WARNINGS OFF)
4+
target_sources(uibase-tests
5+
PRIVATE
6+
test_formatters.cpp
7+
test_ifiletree.cpp
8+
)
9+
mo2_configure_tests(uibase-tests NO_SOURCES WARNINGS 4)
510
target_link_libraries(uibase-tests PRIVATE uibase)

vcpkg-configuration.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
{
1515
"kind": "git",
1616
"repository": "https://github.com/ModOrganizer2/vcpkg-registry",
17-
"baseline": "27d8adbfe9e4ce88a875be3a45fadab69869eb60",
17+
"baseline": "09c389ef37bcec89b28f13105be959fecf4f3975",
1818
"packages": ["mo2-cmake", "spdlog"]
1919
}
2020
]

0 commit comments

Comments
 (0)